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?


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';

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.



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';

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.