如何使用大于运算符和日期?


106

不知道这是怎么回事。这是来自phpMyAdmin的查询:

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

但我始终获得表中返回的所有记录,包括开始日期为2012-11-01的记录。是什么赋予了?


1
您的start_date列是date还是timestamp类型?
Shamis Shukoor 2012年

Answers:


190

您迷上start_date了单引号导致它变成字符串,请backtick改用

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

1
如果加了时间戳怎么办?
ichimaru

需要指出的是,MySQL对日期格式似乎有些挑剔。而2019/02/08 21:04:07或2019-02-08 21:04:07会产生预期的结果,而02-08-2019 21:04:07使用美国日期格式会产生更广泛的净额。
戴维·A·格雷,

22

在您的语句中,您正在将一个名为start_date的字符串与时间进行比较。
如果start_date是一列,则应为

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

(无撇号)或


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

(带有反引号)。

希望这可以帮助。



2

在我的情况下,我的专栏是一个约会时间,它一直为我提供所有记录。我所做的是包括时间,请参见以下示例

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';

0

在解决方案下面的研究之后,我已经尝试过但无法正常工作。

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

参考

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.