【问题标题】:SQL Server calculating dates across monthsSQL Server 跨月计算日期
【发布时间】:2013-09-11 08:43:45
【问题描述】:

我正在将我的工作班次记录到 Microsoft SQL Server 中,并且我想计算下一份薪水的期望值是多少。如果我的薪水是从 1 日到 31 日,那将不是问题。问题是我的工资单是从 20 日到 19 日,并在下个月支付。

我已经成功使用了这个 T-SQL 查询:

SELECT * 
FROM table 
WHERE Date BETWEEN '2013-01-20' AND '2013-02-19'

因此,T-SQL 查询会按预期从我的数据库中进行提取。如何每月自动获得正确的日期?等(2013-01-20 和 2013-02-19)

我一直在阅读有关日期范围的信息,但从未发现任何可以解决我的特定问题的内容。

【问题讨论】:

    标签: .net sql-server datetime range


    【解决方案1】:

    您可以像这样定义两个变量并赋值并在 where 子句中使用。

    SET @startingMonth= CAST(CAST(YEAR(getdate()) AS varchar) + '-' +  CAST(MONTH(getdate()) AS varchar) + '-' + '20' AS DATETIME)
    
    IF(MONTH(getdate())<>12)
      BEGIN
       SET @endMonth= CAST(CAST(YEAR(getdate()) AS varchar) + '-' +  CAST(MONTH(getdate())+1 AS varchar) + '-' + '19' AS DATETIME)
      END
    ELSE
      BEGIN
       SET @endMonth= CAST(CAST(YEAR(getdate())+1 AS varchar) + '-' +  CAST(1 AS varchar) + '-' + '19' AS DATETIME)
      END
    

    【讨论】:

    • 是的,通过检查月份是否为12来处理年份的变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多