如何从mysql中的当前日期时间减去30天?
SELECT * FROM table
WHERE exec_datetime BETWEEN DATEDIFF(NOW() - 30 days) AND NOW();
如何从mysql中的当前日期时间减去30天?
SELECT * FROM table
WHERE exec_datetime BETWEEN DATEDIFF(NOW() - 30 days) AND NOW();
当前回答
另一种方式
SELECT COUNT(*) FROM tbl_debug WHERE TO_DAYS(`when`) < TO_DAYS(NOW())-30 ;
其他回答
SELECT date_format(current_date - INTERVAL 50 DAY,'%d-%b-%Y')
可以在SQL中使用日期格式进行格式化。
SELECT * FROM table
WHERE exec_datetime BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW();
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add
如果你只需要日期而不需要时间,可以使用:
select*from table where exec_datetime
between subdate(curdate(), 30)and curdate();
由于curdate()省略了时间组件,因此它可能比now()更快,并且在只对日期感兴趣的情况下更“语义正确”。
此外,subdate()的2-arity重载可能比使用interval更快。 Interval用于需要非日组件的情况。
对于不想使用DATE_SUB的人,使用CURRENT_DATE:
SELECT CURRENT_DATE - INTERVAL 30 DAY
另一种方式
SELECT COUNT(*) FROM tbl_debug WHERE TO_DAYS(`when`) < TO_DAYS(NOW())-30 ;