【发布时间】:2012-11-07 01:15:42
【问题描述】:
不知道这里发生了什么。这是来自 phpMyAdmin 的查询:
SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';
但我始终返回表中的所有记录,包括开始日期为 2012-11-01 的记录。什么给了?
【问题讨论】:
-
您的 start_date 列的类型是日期还是时间戳?
不知道这里发生了什么。这是来自 phpMyAdmin 的查询:
SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';
但我始终返回表中的所有记录,包括开始日期为 2012-11-01 的记录。什么给了?
【问题讨论】:
你已经用单引号将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 `la_schedule` WHERE date(start_date) > date('2012-11-18');
因为那才是真正适合我的。在两个比较值上添加 date() 函数。
【讨论】:
在我的情况下,我的专栏是一个日期时间,它不断给我所有记录。我所做的是包含时间,请参见下面的示例
SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';
【讨论】:
【讨论】:
如果您正在比较时间戳 - 您可以尝试关注
select * from table where columnInTimestamp > ((UNIX_TIMESTAMP() * 1000) - (1*24*60*60*1000))
这里 UNIX_TIMESTAMP() 给出当前时间戳,其中 "12460601000" 是 1 天的时间戳 -- 这样您就可以找到刚刚创建的数据1 天或 2 天等。
【讨论】: