11

如果我有这样的约会:

'2013-03-25'

我想用WHERE“昨天”写一个 MySQL 查询,我该怎么做?

4

4 回答 4

27

这应该这样做:

WHERE `date` = CURDATE() - INTERVAL 1 DAY
于 2013-03-25T19:10:29.120 回答
22

获取昨天日期的一种简单方法是使用subdate()函数:

subdate(currentDate, 1)
于 2013-03-25T19:11:52.153 回答
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;

注意:我在代码段中设置了变量,以便于查看。当我编写最终查询时,我通常不使用变量。

于 2014-09-02T21:03:58.940 回答
1

我想你正在寻找:

DATE_ADD(date_column, INTERVAL -1 DAY)

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

于 2013-03-25T19:10:55.667 回答