如果我有这样的约会:
'2013-03-25'
我想用WHERE
“昨天”写一个 MySQL 查询,我该怎么做?
这应该这样做:
WHERE `date` = CURDATE() - INTERVAL 1 DAY
获取昨天日期的一种简单方法是使用subdate()
函数:
subdate(currentDate, 1)
我总是不得不参考一个代码片段来再次解决这个问题。
习惯上将日期时间以 UTC 格式存储在数据库中。但通常,在生成报告时,需要针对特定时区调整时间。
这是我用来显示昨天选择的片段,已针对太平洋时间进行了调整:
SET @date_start = DATE_SUB((CURDATE() - INTERVAL 1 DAY), INTERVAL 8 HOUR);
SET @date_end = DATE_SUB(CURDATE(), INTERVAL 8 HOUR);
SELECT
projects.token,
projects.created_at as 'UTC created_at',
DATE_SUB(projects.created_at, INTERVAL 8 HOUR) as 'Pacific created_at'
FROM
projects
WHERE
projects.created_at BETWEEN @date_start AND @date_end;
注意:我在代码段中设置了变量,以便于查看。当我编写最终查询时,我通常不使用变量。
我想你正在寻找:
DATE_ADD(date_column, INTERVAL -1 DAY)
见https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html