MySQL:如何使用当前日期获得"本周的日期"?

mar*_*t15 0 php sql date

我有关于今天获得5个事件的SQL查询:

SELECT n.nid, n.type, n.title, nr.body, nr.teaser, FROM_UNIXTIME(e.event_start) start_date, FROM_UNIXTIME(e.event_end) end_date
FROM node n
LEFT JOIN event e ON n.nid = e.nid
LEFT JOIN node_revisions nr ON nr.nid = e.nid
WHERE n.`type` = 'event'
AND NOW() BETWEEN FROM_UNIXTIME(e.event_start) AND FROM_UNIXTIME(e.event_end)
ORDER BY n.`created` DESC
LIMIT 5
Run Code Online (Sandbox Code Playgroud)

然后,我需要使用"今天包括"今天"并在周日开始"来获得"本周的活动".

我怎么能在MySQL中这样做?

任何帮助将不胜感激.提前致谢 :)

干杯,马克

Ale*_*lli 7

你需要更好地定义"本周" - 你的意思是以今天为中心的7天滑动窗口,或者从周日开始的一周(包括"今天"的那个)?这完全取决于"本周"的语义,我们不可能通过所谓的模糊表达来决定你的意思.在您提到的两种方法中,根据您的意思,一种或另一种(或其中的变体)将是合适的.

编辑:OP已在评论中澄清他的意思是"一周包括"今天"并在周日开始" - 我从他的使用中推断出FROM_UNIXTIME他所针对的特定SQL方言是MySQL.然后,WEEK(somedate, 0)MySQL函数应该给他他想要的东西,请参阅mysql的文档.

特别,

AND WEEK(CURDATE, 0) BETWEEN WEEK(FROM_UNIXTIME(e.event_start), 0)
                         AND WEEK(FROM_UNIXTIME(e.event_end), 0)
Run Code Online (Sandbox Code Playgroud)

应该是WHEREOP正在寻找的条款.