2010-01-25 96 views
5

如何在MySQL中执行此操作?MySQL - SELECT WHERE date <X

SELECT * FROM MyTable WHERE MyDateCol < TODAY() 

我GOOGLE了关于这个问题有很多,并没有真正发现,除了“看在MySQL的日期裁判”,这不容易解释的不够高于一切。

我知道我能做到这有点间接如下:

SELECT * FROM MyTable WHERE MyDateCol BETWEEN (0000-00-00) AND TODAY() 

回答

4

在MySQL中,你有curdate()功能可按,这将让你今天的日期。

所以,这样的事情应该做的:

select * 
from your_table 
where your_date_column < curdate() 


引述该功能的指南的页面:

返回当前日期的值 'YYYY-MM-DD'YYYYMMDD格式, 取决于函数是否在字符串或数字上下文中使用 。


如果你要比较当前时间(不仅是天),您可以使用now()功能:

返回当前日期和时间作为 值在'YYYY-MM-DD HH:MM:SS'YYYYMMDDHHMMSS.uuuuuu格式

+0

关于年月日数字格式,将2010-MAR-27成为20100327或者这将是2040 – 2010-01-25 12:06:18

+1

十进制业增加值我没有上,我可以尝试,现在一台服务器,但考虑到手动YYYYMMDD说,我想你会得到20100327,而且没有任何一种加法的结果 - 这将很难合作。 – 2010-01-25 12:16:47

+0

我已经用我的本地MySQL服务器验证了这一点,它使用的数字如20100327,这使得比较非常容易。您也可以直接将字符串日期转换为数字以用于数字比较。'“2010-03-27”=>“20100327”=> 20100327' – 2010-01-25 12:45:36

2
SELECT * FROM MyTable WHERE MyDateCol < CURDATE() 
1

使用NOW()功能:

SELECT * FROM MyTable WHERE MyDateCol < NOW() 
2

如果MySQL支持SYSDATE,你应该使用,而不是NOW()或CURDATE(),因为它是更标准。

SELECT * FROM MyTable WHERE MyDateCol < SYSDATE;