MySQL选择昨天的日期

时间:2013-03-25 19:09:25

标签: mysql sql date

如果我有这样的日期:

'2013-03-25'

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

4 个答案:

答案 0 :(得分:27)

这应该这样做:

WHERE `date` = CURDATE() - INTERVAL 1 DAY

答案 1 :(得分:20)

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

subdate(currentDate, 1)

答案 2 :(得分:1)

我认为你在寻找:

DATE_ADD(date_column, INTERVAL -1 DAY)

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

答案 3 :(得分: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;

注意:我在代码段中设置了变量,因此更容易查看。当我写下最终查询时,我通常不会使用这些变量。