这是我的疑问:
SELECT *
FROM daily_records
AND date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
我用它来生成昨天发生的所有事情的报告。周二至周五这很好用。但是,在星期一,我希望它能够回溯到星期五(前一个工作日,例如INTERVAL 3 DAY
)。
有没有办法在mySQL中执行此操作?或者我只需要在编写查询之前在PHP中查看星期几?
答案 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();