130

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

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

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

4

7 回答 7

222

start_date用单引号括起来导致它变成字符串,backtick改用

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';
于 2012-11-19T05:49:22.783 回答
25

在您的声明中,您将一个名为start_date的字符串与时间进行比较。
如果start_date是一列,它应该是

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

(无撇号)或


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

(带反引号)。

希望这可以帮助。

于 2012-11-19T06:22:45.107 回答
12

试试这个。

SELECT * FROM la_schedule WHERE `start_date` > '2012-11-18';
于 2012-11-19T08:11:58.477 回答
3

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

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

因为那才是真正适合我的。在两个比较值上添加 date() 函数。

于 2020-10-13T10:59:15.587 回答
2

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

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';
于 2019-06-19T09:22:26.883 回答
2

在解决方案下方的研究发现后,我已经尝试但以上不起作用。

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

参考

于 2020-01-03T04:58:48.653 回答
0

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

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

这里 UNIX_TIMESTAMP() 给出当前时间戳,其中“1 24 60 60 1000”是 1 天的时间戳——通过它,您可以找到刚刚在 1 天或 2 天等内创建的数据。

于 2021-04-11T00:28:21.050 回答