Saya ingin membandingkan tanggal dari database yang berada di antara 2 tanggal tertentu. Kolom dari database adalah DATETIME, dan saya ingin membandingkannya hanya dengan format tanggal, bukan format tanggal waktu.
SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10'
Saya mendapatkan kesalahan ini ketika saya menjalankan SQL di atas:
Ada kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat 'us_reg_date, 120)> =' 2000-07-05 'AND CONVERT (CHAR (10), us_reg_date, 120) <=' 2011- 'di baris 1
Bagaimana masalah ini bisa diperbaiki?
mysql
sql
comparison
NVG
sumber
sumber
Itu adalah sintaks SQL Server untuk mengubah tanggal menjadi string. Di MySQL Anda dapat menggunakan fungsi DATE untuk mengekstrak tanggal dari datetime:
SELECT * FROM players WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'
Tetapi jika Anda ingin memanfaatkan indeks pada kolom,
us_reg_date
Anda mungkin ingin mencoba ini sebagai gantinya:SELECT * FROM players WHERE us_reg_date >= '2000-07-05' AND us_reg_date < '2011-11-10' + interval 1 day
sumber
Ini bekerja untuk saya:
select date_format(date(starttime),'%Y-%m-%d') from data where date(starttime) >= date '2012-11-02';
Perhatikan format string '% Y-% m-% d' dan format tanggal input.
sumber
Saya mendapat jawabannya.
Ini kodenya:
SELECT * FROM table WHERE STR_TO_DATE(column, '%d/%m/%Y') BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y') AND STR_TO_DATE('07/10/15', '%d/%m/%Y')
sumber
inilah yang berhasil untuk saya:
select * from table where column BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y') AND STR_TO_DATE('07/10/15', '%d/%m/%Y')
Harap perhatikan bahwa saya harus mengubah STR_TO_DATE (kolom, '% d /% m /% Y') dari solusi sebelumnya, karena butuh waktu lama untuk memuat
sumber