Saya mengalami masalah di tempat kerja hari ini. Saya perlu melakukan kueri berdasarkan waktu, tetapi hasil kueri salah. Misalnya, untuk mengetahui anggota yang mendaftar di website antara 12-10-2007 dan 31-10-2007, setelah memilih tanggal, klik tombol "Query" untuk mencari anggota yang mendaftar pada 31-10-2007. Informasinya tidak ditampilkan sama sekali, dan hasilnya sama setelah beberapa kali pengujian. Debugger menemukan bahwa ada masalah dengan pernyataan SQL.
Pernyataan SQL-nya adalah sebagai berikut: SELECT * FROM userinfo WHERE regtime >= '2007-10-12' AND regtime <= '2007-10-31'. Sekilas, sepertinya tidak ada kesalahan dalam pernyataan SQL ini, namun setelah membandingkan nilai yang disimpan pada kolom terkait di database, ditemukan bahwa nilai yang disimpan tidak dalam bentuk sederhana tanggal, tetapi dalam bentuk tanggal + waktu, yaitu: yyyy-MM-dd HH:mm :ss, ketika pernyataan SQL menentukan ukuran regtime dan '2007-10-31', maka akan berpikir bahwa '2007- 10-31' ditulis tidak lengkap, sehingga kedua nilai tersebut tidak dianggap sama. Apa yang harus dilakukan?
Jangan khawatir, ASP memberi kita fungsi penambahan dan pengurangan tanggal untuk membantu kita mengatasi masalah ini.
1. Penambahan tanggal
Fungsi DateAdd mengembalikan tanggal penambahan interval waktu tertentu.
DateAdd(interval, number, date)
Sintaks fungsi DateAdd memiliki parameter berikut (1) interval diperlukan. Ekspresi string yang mewakili interval waktu untuk ditambahkan. Lihat bagian Pengaturan untuk mengetahui nilai.
(2) nomor diperlukan. Ekspresi numerik yang menunjukkan jumlah interval waktu yang akan ditambahkan. Ekspresi numerik bisa positif (mendapatkan tanggal di masa depan) atau negatif (mendapatkan tanggal di masa lalu).
(3) tanggal wajib diisi. Varian atau teks yang mewakili tanggal penambahan interval.
Deskripsi Anda dapat menggunakan fungsi DateAdd untuk menambah atau mengurangi interval waktu tertentu dari suatu tanggal. Misalnya, Anda dapat menggunakan DateAdd untuk menghitung tanggal 30 hari dari hari ini atau waktu 45 menit dari sekarang. Untuk menambahkan interval waktu dalam "hari" ke tanggal, Anda dapat menggunakan "hari dalam setahun" ("y"), "hari" ("d"), atau "hari dalam seminggu" ("w").
Fungsi DateAdd tidak mengembalikan tanggal yang tidak valid. Contoh berikut menambahkan satu bulan ke 31 Januari 1995:
NewDate = DateAdd("m", 1, "31-Jan-95")
Dalam contoh ini, DateAdd mengembalikan 28 Februari 1995, bukan 31 Februari 1995. Jika tanggalnya 31 Januari 1996, maka tanggal 29 Februari 1996 dikembalikan karena tahun 1996 adalah tahun kabisat.
Jika tanggal perhitungan sebelum tahun 100 M, akan terjadi kesalahan.
Jika angka bukan nilai Panjang, maka angka tersebut dibulatkan ke bilangan bulat terdekat sebelum dihitung.
2. Pengurangan tanggal Fungsi DateDiff mengembalikan interval waktu antara dua tanggal.
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
Sintaks fungsi DateDiff memiliki parameter berikut:
(1) interval diperlukan. Ekspresi string yang digunakan untuk menghitung interval waktu antara tanggal1 dan tanggal2. Lihat bagian Pengaturan untuk mengetahui nilai.
(2) tanggal1, tanggal2 wajib diisi. Ekspresi tanggal. Dua tanggal digunakan untuk perhitungan.
(3) Hari pertama dalam seminggu opsional. Konstanta yang menentukan hari pertama dalam seminggu. Jika tidak ditentukan, defaultnya adalah hari Minggu. Lihat bagian Pengaturan untuk mengetahui nilai.
(4) Minggu pertama tahun opsional. Konstanta yang menentukan minggu pertama tahun ini. Jika tidak ditentukan, defaultnya adalah minggu tanggal 1 Januari. Lihat bagian Pengaturan untuk mengetahui nilai.
Deskripsi Fungsi DateDiff digunakan untuk menentukan jumlah interval waktu tertentu yang ada antara dua tanggal. Misalnya, Anda bisa menggunakan DateDiff untuk menghitung jumlah hari antara dua tanggal, atau jumlah minggu antara hari ini dan hari terakhir dalam setahun.
Untuk menghitung jumlah hari antara tanggal1 dan tanggal2, Anda dapat menggunakan "hari dalam setahun" ("y") atau "hari" ("d"). Jika intervalnya adalah "hari dalam seminggu" ("w"), DateDiff mengembalikan jumlah minggu antara dua tanggal. Jika tanggal1 adalah hari Senin, DateDiff menghitung jumlah hari Senin sebelum tanggal2. Hasil ini berisi tanggal2 tetapi bukan tanggal1. Jika intervalnya adalah "minggu" ("ww"), fungsi DateDiff mengembalikan jumlah minggu antara dua tanggal dalam tabel kalender. Fungsi ini menghitung jumlah hari Minggu antara tanggal1 dan tanggal2. DateDiff akan mengevaluasi tanggal2 jika tanggal2 adalah hari Minggu, tetapi bukan tanggal1 meskipun tanggal1 adalah hari Minggu.
Jika tanggal1 lebih lambat dari tanggal2, fungsi DateDiff mengembalikan angka negatif.
Argumen hari pertama dalam seminggu memengaruhi penghitungan menggunakan simbol pemisah "w" dan "ww".
Jika tanggal1 atau tanggal2 adalah literal tanggal, tahun yang ditentukan menjadi bagian tetap dari tanggal tersebut. Namun jika tanggal1 atau tanggal2 diapit tanda kutip (" ") dan tahun dihilangkan, tahun berjalan akan disisipkan setiap kali ekspresi tanggal1 atau tanggal2 dievaluasi dalam kode. Hal ini memungkinkan untuk menulis kode program yang berfungsi untuk tahun yang berbeda.
Jika intervalnya adalah "tahun" ("yyyy"), bandingkan tanggal 31 Desember dengan tanggal 1 Januari tahun berikutnya. Meskipun perbedaannya sebenarnya hanya satu hari, DateDiff mengembalikan 1 yang menunjukkan perbedaan satu tahun.