如何使用DATE_SUB形成SQL查询以检查昨天的数据,或者如果是星期一,检查星期五的数据?

时间:2009-08-20 21:14:06

标签: php mysql date

这是我的疑问:

SELECT *
FROM daily_records 
AND date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)

我用它来生成昨天发生的所有事情的报告。周二至周五这很好用。但是,在星期一,我希望它能够回溯到星期五(前一个工作日,例如INTERVAL 3 DAY)。

有没有办法在mySQL中执行此操作?或者我只需要在编写查询之前在PHP中查看星期几?

3 个答案:

答案 0 :(得分:3)

你可以......

SELECT *
FROM daily_records
WHERE date = IF(DAYOFWEEK(CURDATE()) = 2, DATE_SUB(CURDATE(), INTERVAL 3 DAY), DATE_SUB(CURDATE(), INTERVAL 1 DAY))

答案 1 :(得分:3)

这应该这样做:

SELECT * FROM daily_records AND date =
DATE_SUB(CURDATE(), INTERVAL IF(DATE_FORMAT(NOW(), '%w') = 1, 3, 1) DAY)

答案 2 :(得分:0)

mysql> create function PREV_BIZ_DATE ()
    -> returns DATE
    -> return (CURRENT_DATE() - interval if(DAYOFWEEK(CURRENT_DATE()) = 2, 3, 1) day);

mysql> SELECT * FROM daily_records WHERE date = PREV_BIZ_DATE();