我有关于今天获得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中这样做?
任何帮助将不胜感激.提前致谢 :)
干杯,马克
你需要更好地定义"本周" - 你的意思是以今天为中心的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正在寻找的条款.
| 归档时间: |
|
| 查看次数: |
4323 次 |
| 最近记录: |