【问题标题】:Two Predefined Dates两个预定义日期
【发布时间】:2014-06-24 15:14:00
【问题描述】:

如果我想根据上个月的统计数据搜索记录,我该怎么做?因此,如果我想要 6 月 15 日的报告,它将包括 5 月 15 日至 6 月 14 日。7 月 15 日的报告将包括 6 月 15 日至 7 月 14 日,依此类推。截至目前,我有这个:

where currentemploydate between CAST('2013/05/15' AS DATETIME) AND CAST('2013/06/14' AS DATETIME) 

但是我不知道如何自动更新下个月的日期。如果报表在 20 日运行,它仍然显示从当月 14 日到上月 15 日的日期

【问题讨论】:

  • 你用的是什么数据库?
  • SQL 服务器管理工​​作室

标签: sql sql-server date between


【解决方案1】:

那我想你想要:

where currentemploydate between CAST('2013-05-15' AS DATETIME) AND
                                dateadd(month, 1, CAST('2013-05-15' AS DATETIME) )

这应该适用于任何日期常量。

【讨论】:

  • 有没有办法让它自动做到这一点,而不必每个月手动输入月份?因此,当我运行报告时,它会根据该时间段自动提取数据,而不必每次都进入并编辑查询
  • @user3630473 。 . .这可能是另一个问题。当您有人只是“运行”报告时,我不明白您想要什么月份范围。
【解决方案2】:
DECLARE @START datetime
SET @START = '2012-07-31'
DECLARE @END datetime
SET @END = DATEADD(DAY, 30, @START)
select @START, @END

假设一个月是 30 天....这是可以接受的假设吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-18
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多