Saya memiliki TEST tabel dengan DATETIME
bidang, seperti ini:
ID NAME DATE
1 TESTING 2014-03-19 20:05:20.000
Apa yang saya butuhkan kueri mengembalikan baris ini dan setiap baris dengan tanggal 03/19/2014, tidak peduli jam berapa sekarang. Saya mencoba menggunakan
select * from test where date = '03/19/2014';
Tapi tidak ada baris yang dikembalikan. Satu-satunya cara untuk membuatnya berfungsi yang saya temukan adalah juga memberikan bagian waktu pada tanggal:
select * from test where date = '03/19/2014 20:03:02.000';
sumber
DateDiff()
fungsinya, dalam semua variannya, menghitung dan mengembalikan jumlah batas tanggal yang harus disilangkan untuk mendapatkan dari satu tanggal ke tanggal lainnya. Inilah mengapaDateDiff(day, '1Jan2016', '31Dec2017 23:259:59')
danDateDiff(day, '31Dec2016 23:259:59', '1Jan2017 ')
keduanya kembali1
.Jawaban sederhana;
select * from test where cast ([date] as date) = '03/19/2014';
sumber
Saya menggunakan MySQL 5.6 dan ada fungsi DATE untuk mengekstrak hanya bagian tanggal dari waktu tanggal. Jadi, solusi sederhana untuk pertanyaan tersebut adalah -
select * from test where DATE(date) = '2014-03-19';
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html
sumber
select * from test where date between '03/19/2014' and '03/19/2014 23:59:59'
Ini adalah jawaban yang sangat buruk . Karena dua alasan.
1. Apa yang terjadi dengan waktu seperti 23.59.59.700 dll. Ada waktu yang lebih besar dari 23:59:59 dan hari berikutnya.
2. Perilaku tersebut tergantung pada tipe data. Kueri berperilaku berbeda untuk tipe datetime / tanggal / datetime2.
Pengujian dengan 23: 59: 59.999 membuatnya lebih buruk karena tergantung pada tipe data Anda mendapatkan pembulatan yang berbeda.
select convert (varchar(40),convert(date , '2014-03-19 23:59:59.999')) select convert (varchar(40),convert(datetime , '2014-03-19 23:59:59.999')) select convert (varchar(40),convert(datetime2 , '2014-03-19 23:59:59.999'))
- Untuk tanggal nilainya 'dicincang'. - Untuk tanggal waktu, nilainya dibulatkan ke tanggal berikutnya. (Nilai terdekat). - Untuk datetime2 nilainya tepat.
sumber
Ini berfungsi untuk saya untuk server MS SQL:
select * from test where year(date) = 2015 and month(date) = 10 and day(date)= 28 ;
sumber
Coba ini
select * from test where Convert(varchar, date,111)= '03/19/2014'
sumber
kamu bisa mencoba ini
select * from test where DATEADD(dd, 0, DATEDIFF(dd, 0, date)) = '03/19/2014';
sumber
Anda dapat menggunakan pendekatan ini yang memotong bagian waktu:
select * from test where convert(datetime,'03/19/2014',102) = DATEADD(dd, DATEDIFF(dd, 0, date), 0)
sumber
-- Reverse the date format -- this false: select * from test where date = '28/10/2015' -- this true: select * from test where date = '2015/10/28'
sumber
Cukup gunakan ini di file
WHERE
klausa .Bagian "SubmitDate" di bawah ini adalah nama kolom, jadi masukkan milik Anda sendiri.
Ini hanya akan mengembalikan bagian "Tahun" dari hasil, menghilangkan menit, dll.
sumber
select *, cast ([col1] as date) <name of the column> from test where date = 'mm/dd/yyyy'
"col1" adalah nama kolom dengan tanggal dan waktu
<nama kolom> disini anda dapat mengganti nama sesuai keinginan
sumber
select * from invoice where TRUNC(created_date) <=TRUNC(to_date('04-MAR-18 15:00:00','dd-mon-yy hh24:mi:ss'));
sumber
Ada masalah dengan tanggal dan bahasa dan cara menghindarinya adalah menanyakan tanggal dengan format ini YYYYMMDD.
Cara di bawah ini harus menjadi yang tercepat menurut tautan di bawah. Saya memeriksa di SQL Server 2012 dan saya setuju dengan tautannya.
select * from test where date >= '20141903' AND date < DATEADD(DAY, 1, '20141903');
sumber
Gunakan ini
select * from TableName where DateTimeField > date() and DateTimeField < date() + 1
sumber
Uji kueri ini.
SELECT *,DATE(chat_reg_date) AS is_date,TIME(chat_reg_time) AS is_time FROM chat WHERE chat_inbox_key='$chat_key' ORDER BY is_date DESC, is_time DESC
sumber
select * from invoice where TRANS_DATE_D>= to_date ('20170831115959','YYYYMMDDHH24MISS') and TRANS_DATE_D<= to_date ('20171031115959','YYYYMMDDHH24MISS');
sumber
SELECT * FROM test where DATEPART(year,[TIMESTAMP]) = '2018' and DATEPART(day,[TIMESTAMP]) = '16' and DATEPART(month,[TIMESTAMP]) = '11'
sumber