首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL:如何使用当前日期获取“本周日期”?

MySQL:如何使用当前日期获取“本周日期”?
EN

Stack Overflow用户
提问于 2009-07-21 02:24:25
回答 4查看 4.3K关注 0票数 0

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

代码语言:javascript
运行
复制
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

然后,我需要使用"a week that includes "today“and starts on a Sunday”来获取"this week's event“。

我如何在MySQL中做到这一点?

任何帮助都将不胜感激。提前感谢:)

干杯,马克

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-21 02:34:09

你需要更好地定义“本周”--你是指以今天为中心的7天滑动窗口,还是从周日开始的一周(包括“今天”)?这完全取决于“本周”的语义,我们不可能确定你所说的模棱两可的表达是什么意思。在你提到的两种方法中,根据你的意思,其中一种(或其变体)是合适的。

SQL :OP在一条评论中澄清了他的意思是“包括”今天“和星期天开始的一周--我从他对FROM_UNIXTIME的使用中推断出他的目标是MySQL。然后,WEEK(somedate, 0)是MySQL函数,它应该给他提供他想要的东西,参见mysql's docs

具体来说,

代码语言:javascript
运行
复制
AND WEEK(CURDATE, 0) BETWEEN WEEK(FROM_UNIXTIME(e.event_start), 0)
                         AND WEEK(FROM_UNIXTIME(e.event_end), 0)

应该是操作员正在查找的WHERE子句。

票数 7
EN

Stack Overflow用户

发布于 2009-07-21 03:00:59

我不确定这是用于SQL Server还是MySQL,但在MySQL中,您可以获得今天的当前日期,然后使用date_add从当前日期(开始日期)减去多少天,然后使用开始日期,再次使用date_add添加7天(结束日期)。

希望这对你有帮助,如果你需要语法方面的帮助,请告诉我。

票数 1
EN

Stack Overflow用户

发布于 2009-07-21 03:06:12

根据表/列的名称,您似乎正在使用Drupal。您是否考虑过使用视图来实现您的目标?我不能从上下文中判断这是否是您正在编写的模块的一部分,在这种情况下,继续努力,或者您是否只想在块中显示事件列表,在这种情况下,View应该能够为您完成所有这些操作,而不会影响PHP/SQL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1157004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档