【问题标题】:Check difference between 2 dates in t-SQL检查 t-SQL 中两个日期之间的差异
【发布时间】:2026-02-17 15:00:01
【问题描述】:

使用 T-SQL 检查两个日期之间的最佳方法,看看它们是否在 3 个月之内。

例如,如果我在下面有这 2 个日期,我想检查 @Date1 是否在 @Date2 的 3 个月内,反之亦然。

 DECLARE @Date1 DATETIME = '2019-01-15 00:00:00.000'

 DECLARE @Date2 DATETIME = '2018-10-23 00:00:00.000'

【问题讨论】:

  • 定义 3 个月? 90天? 2019 年 2 月 28 日与 2018 年 11 月 30 日是否相隔三个月?
  • 还定义“恰好在 3 个月内”。 3个月之内?正好相隔3个月?还有什么?
  • 问题不清楚,我很确定可以在这里找到答案:docs.microsoft.com/en-us/sql/t-sql/functions/…
  • 是的 28/02/2019 和 30/10/2018 是 3 个月。它正好是 3 个月而不是 90 天,即 15/01/2019 和 15/10/2018 很好,但 15/01/2019 和 14/10/2018 已经过去了。

标签: sql-server tsql sql-server-2016 date-difference


【解决方案1】:

这是简单的陈述:

选择 abs(DATEDIFF(月, @date1, @date2))

【讨论】:

  • 根据 OP 中提供的解释,这是不正确的。根据您的回答,1 月 31 日和 4 月 1 日相隔 3 个月。
【解决方案2】:

你可以试试这个。

  DECLARE @Date1 DATETIME = '2019-01-15 00:00:00.000'

  DECLARE @Date2 DATETIME = '2018-10-23 00:00:00.000'

  SELECT dateadd(MONTH, 3,@Date1 ) >= @Date2 

【讨论】:

    【解决方案3】:

    你可以试试

        DECLARE @Date1 DATETIME = '2019-01-15 00:00:00.000'
    
        DECLARE @Date2 DATETIME = '2018-10-23 00:00:00.000'
    
    
    
       SELECT CASE WHEN ABS(DATEDIFF(DAY, @date1, @date2)) <= 90 THEN 'Inside 3 Months' 
    ELSE 'Outside 3 months' END
    

    【讨论】: