Bagaimana cara menggunakan lebih besar dari operator dengan tanggal?

106

Tidak tahu apa yang terjadi di sini. Inilah kueri, langsung dari phpMyAdmin:

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

Tetapi saya secara konsisten mendapatkan semua catatan dalam tabel yang dikembalikan, termasuk yang dengan tanggal mulai 2012-11-01. Apa yang memberi?

Clinton J.
sumber
1
Apakah kolom start_date Anda bertipe date atau timestamp?
Shamis Shukoor

Jawaban:

190

Anda telah memperbesar start_datedengan tanda kutip tunggal menyebabkannya menjadi string, gunakan backticksebagai gantinya

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';
John Woo
sumber
1
apa yang terjadi jika cap waktunya?
ichimaru
Perlu dicatat bahwa MySQL tampaknya agak pilih-pilih tentang format tanggal; sementara 2019/02/08 21:04:07 atau 2019-02-08 21:04:07 menghasilkan hasil yang diharapkan, 02-08-2019 21:04:07, menggunakan format tanggal AS, menghasilkan jaring yang jauh lebih luas .
David A. Gray
22

Dalam pernyataan Anda, Anda membandingkan string yang disebut start_date dengan waktu.
Jika start_date adalah kolom, itu harus

 
  SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';
 

(tanpa tanda kutip) atau


SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';

(dengan backticks).

Semoga ini membantu.

Berlutut Sebelum ZOD
sumber
12

Coba ini.

SELECT * FROM la_schedule WHERE `start_date` > '2012-11-18';
Faizan Khattak
sumber
2

Dalam kasus saya, kolom saya adalah tanggal waktu yang terus memberi saya semua catatan. Yang saya lakukan adalah memasukkan waktu, lihat contoh di bawah ini

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';
beatusfk.dll
sumber
0

Saya telah mencoba tetapi di atas tidak berfungsi setelah penelitian ditemukan di bawah solusinya.

SELECT * FROM my_table where DATE(start_date) > '2011-01-01';

Ref

Suresh Kerai
sumber