【问题标题】:SQL to select records with a date greater than 40 days prior to start of monthSQL 选择日期早于月初 40 天的记录
【发布时间】:2011-02-02 11:49:20
【问题描述】:

我的表中有一个字段,其中包含一个日期并且是日期时间格式。

我希望选择该字段中的日期大于当月 1 日之前 40 天的日期的所有记录。

努力想出正确的 T-SQL 语法来做到这一点。

【问题讨论】:

    标签: sql-server tsql datetime


    【解决方案1】:

    此表达式为您提供您正在寻找的日期:

    DATEADD(DAY, -DATEPART(d, GETDATE()) + 1 - 40, GETDATE())
    

    【讨论】:

    • +1。不过,DAY(...)(而不是 DATEPART(d, ...))更简洁,因为与 DATEADD() 相比,仅减去。
    • 这个表达式的哪一部分说明从当月的第一天开始倒计时?
    【解决方案2】:

    这行得通吗

     select @urdatecolumn > (getdate()- (DAY(getdate()) + 40-1))
    

    【讨论】:

    • 您的解决方案最简洁,只是略有错误。你也需要少减一天,即应该是... + 40 - 1))
    【解决方案3】:

    试试这个

    where dt_blah > DATEADD(d,-40,DATEADD(wk, DATEDIFF(wk, 0, dateadd(dd, 6 - datepart(day, dt_blah), dt_blah)), 0) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多