Saya mengalami masalah di tempat kerja hari ini. Saya perlu melakukan kueri berdasarkan waktu, tetapi hasil kueri salah. Misalnya, jika Anda ingin mengetahui anggota yang mendaftar di situs web antara 12-10-2007 dan 31-10-2007, setelah memilih tanggal, klik tombol kueri, dan Anda akan menemukan informasi tentang anggota yang terdaftar. pada 31-10-2007 pada dasarnya tidak muncul, dan hasilnya sama setelah beberapa 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. Tambahkan tanggal
Fungsi TanggalTambah
Mengembalikan tanggal penambahan interval waktu tertentu.
DateAdd (interval, angka, tanggal)
Sintaks fungsi DateAdd memiliki parameter berikut
(1) interval diperlukan. Ekspresi string yang mewakili interval waktu untuk ditambahkan. Lihat bagian Pengaturan untuk nilai numerik.
(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.
mendirikan
Parameter interval dapat memiliki nilai berikut:
Deskripsi pengaturan
tahun yyyy
kuartal q
m bulan
y jumlah hari dalam setahun
hari H
w Hari dalam seminggu
minggu minggu
jam jam
n menit
detik
menjelaskan
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 hingga saat ini, 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 tanggal 31 Januari 1995:
Tanggal Baru = TanggalTambah(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, tanggal1, tanggal2 [, hari pertama minggu[, minggu pertama tahun]])
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 nilai numerik.
(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 nilai numerik.
(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 nilai numerik.
mendirikan
Parameter interval dapat memiliki nilai berikut:
Deskripsi pengaturan
tahun yyyy
kuartal q
m bulan
y jumlah hari dalam setahun
hari H
w Hari dalam seminggu
minggu minggu
jam jam
n menit
detik
Parameter hari pertama dalam seminggu dapat memiliki nilai berikut:
Deskripsi nilai konstan
vbUseSystem 0 Gunakan pengaturan API Dukungan Bahasa Nasional (NLS).
vbMinggu 1 Minggu (default)
vbSenin 2 Senin
vbSelasa 3 Selasa
vbRabu 4 Rabu
vbKamis 5 Kamis
vbJumat 6 Jumat
vbSabtu 7 Sabtu
Parameter minggu pertama tahun dapat memiliki nilai berikut:
Deskripsi nilai konstan
vbUseSystem 0 Gunakan pengaturan API Dukungan Bahasa Nasional (NLS).
vbFirstJan1 1 Dimulai pada minggu tanggal 1 Januari (default).
vbFirstFourDays 2 dimulai dengan minggu pertama tahun baru yang memiliki setidaknya empat hari.
vbFirstFullWeek 3 dimulai dengan minggu penuh pertama di tahun baru.
menjelaskan
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 tanggal 1 dan tanggal 2, Anda dapat menggunakan jumlah hari dalam satu tahun (y) atau hari (d). Jika interval adalah jumlah 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.
Parameter hari pertama dalam seminggu mempengaruhi 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.