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

问题描述 投票:0回答:7

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

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

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

mysql date operators
7个回答
238
投票

您用单引号将

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

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

26
投票

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

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

(无撇号) 或


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

(带反引号)。

希望这有帮助。


12
投票

试试这个。

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

4
投票

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

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

参考


4
投票

添加此内容,因为没有提到这一点。

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

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

PS: 正如 @NikolajHansen 在评论中指出的那样,这可能不是理想的解决方案,因为这可能会在每一行中运行日期函数。


2
投票

就我而言,我的专栏是一个日期时间,它不断为我提供所有记录。我所做的是包括时间,请参阅下面的示例

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

0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.