首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL当前和未来日期

SQL当前和未来日期
EN

Stack Overflow用户
提问于 2014-09-01 18:32:21
回答 2查看 735关注 0票数 2

我有一个Events表,并找到了用于选择所有当前事件和即将发生的事件的解决方案(在接下来的14天内)。

我只是想知道是否有比在WHERE语句中使用OR更好的解决方案。这个解决方案让我觉得自己是个差劲的程序员。

代码语言:javascript
复制
SELECT
   eventID
  ,eventTitle
  ,eventStartDate
  ,eventFinishDate
FROM Events
WHERE eventStartDate <= GETDATE() AND eventFinishDate >= GETDATE()
OR eventStartDate >= GETDATE() AND DATEDIFF(DAY,GETDATE(),eventStartDate) <= 14
ORDER BY eventStartDate

非常感谢您的智慧!非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-01 18:46:04

你可能需要这样的东西:

代码语言:javascript
复制
SELECT
   eventID
  ,eventTitle
  ,eventStartDate
  ,eventFinishDate
FROM Events
WHERE GETDATE() BETWEEN eventStartDate AND eventFinishDate
OR eventStartDate BETWEEN GETDATE() AND DATEADD(DAY, 14, GETDATE())
ORDER BY eventStartDate

顺便说一句,在使用OR运算符指定确切需要使用括号的内容时,一定要小心。因此,您的代码示例可能会失败。如果你得到了错误的结果,你应该尝试:

代码语言:javascript
复制
SELECT
   eventID
  ,eventTitle
  ,eventStartDate
  ,eventFinishDate
FROM Events
WHERE (eventStartDate <= GETDATE() AND eventFinishDate >= GETDATE())
OR (eventStartDate >= GETDATE() AND DATEDIFF(DAY,GETDATE(),eventStartDate) <= 14)
ORDER BY eventStartDate

在我的代码中,它不需要,因为它不是一个复杂的表达式,只有一个OR。

票数 1
EN

Stack Overflow用户

发布于 2014-09-01 18:36:21

假设eventStartDate <= eventFinishDate,您只需说它必须在2周后开始,并且在今天之后结束:

代码语言:javascript
复制
where   eventStartDate <= dateadd(week, 2, getdate())
        and getdate() <= eventFinishDate
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25611296

复制
相关文章

相似问题

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