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

时间:2012-11-19 05:47:25

标签: mysql date operators

不知道这里发生了什么。这是查询,直接来自phpMyAdmin:

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

但是我一直在返回表中的所有记录,包括那些开始日期为2012-11-01的记录。是什么给了什么?

7 个答案:

答案 0 :(得分:160)

您已将start_date括在单引号中,使其成为字符串,而是使用backtick

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

答案 1 :(得分:20)

在您的陈述中,您正在将名为 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 :(得分:10)

试试这个。

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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

Ref

答案 5 :(得分:0)

添加此内容,因为未提及。

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

因为那才是真正对我有用的东西。在两个比较值上添加date()函数。

答案 6 :(得分:0)

如果您正在比较时间戳 - 您可以尝试以下

select * from table where columnInTimestamp > ((UNIX_TIMESTAMP() * 1000) - (1*24*60*60*1000))

此处 UNIX_TIMESTAMP() 给出当前时间戳,其中“12460601000”是 1 天的时间戳——这样您就可以找到刚刚创建的数据1 天或 2 天等。