首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >圆形范围内的匹配日期

圆形范围内的匹配日期
EN

Stack Overflow用户
提问于 2015-11-04 10:49:37
回答 2查看 56关注 0票数 0

我想弄清楚某个事件是否在某人生日后的几周内发生。一年不重要,只有月和日。

例如,我想知道事件(1月5日)是否在生日后4周内(12月18日)。

在SQL中,我有SELECT ..... where abs(week(event)-week(birthday))<5

如果活动和生日都在一年中的第4周和第48周之间,这是很好的。

如何设置查询以使其在边缘月份工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-04 11:23:19

在Server中,我使用DATEDIFF% (模块化)。

代码语言:javascript
复制
SELECT
...
WHERE
(ABS(DATEDIFF(day, @date1, @date2)) % 365) < 4*7
OR
(ABS(DATEDIFF(day, @date1, @date2)) % 365) > 365 - 4*7

为了使计算正确,即使@date1@date2在不同的年份和闰年之间,我会将这两个日期移到相同的年份。这取决于您使用的DBMS,如何更改日期的年份组件,但一旦这两个日期都位于同一个年份,则不需要模块化:

代码语言:javascript
复制
SELECT
...
WHERE
ABS(DATEDIFF(day, @date1, @date2)) < 4*7
OR
ABS(DATEDIFF(day, @date1, @date2)) > 365 - 4*7
票数 1
EN

Stack Overflow用户

发布于 2015-11-04 10:58:37

您可以使用函数DATEDIFF

代码语言:javascript
复制
SELECT DATEDIFF(week,'2014-06-05','2015-08-05') AS DiffDateInWeeks

请注意,此函数可能有不同的名称(或参数),这取决于DBMS。例如,对于MySQL,DATEDIFF函数没有“日期部分”参数,因此可以在this answer中执行类似的操作

代码语言:javascript
复制
SELECT DATEDIFF('2014-06-05','2015-08-05')/7.0 AS DiffDateInWeeks
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33519904

复制
相关文章

相似问题

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