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

不知道这里发生了什么。下面是来自 phpMyAdmin 的查询:

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

但是我总是得到返回表中的所有记录,包括那些开始日期为2012-11-01的记录?

357381 次浏览

您已经用单引号封装了 start_date,导致它变成字符串,改为使用 backtick

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

在您的语句中,您将比较名为 Start _ date的字符串与时间。
如果 Start _ date是一列,那么它应该是


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

(没有撇号) 或者


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

(有倒勾)。

希望这个能帮上忙。

试试这个。

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

对我来说,我的专栏是一个日期时间,它不断给我所有的记录。我所做的是包括时间,见下面的例子

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

我已经试过了,但上面没有工作后,研究发现下面的解决方案。

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

裁判

因为没有提到这一点,所以添加了这一点。

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

因为这对我来说是有效的,在两个比较值上添加 date ()函数。

如果你正在比较时间戳-你可以试着这样做

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

这里 UNIX _ TIMESTAMP ()给出了当前的时间戳,其中“12460601000”是1天的时间戳——有了这个,您可以找到在1天或2天内创建的数据等等。