【问题标题】:Set Static Day and Previous Month GETDATE() SQL设置静态日期和上个月 GETDATE() SQL
【发布时间】:2015-08-06 00:43:04
【问题描述】:

以下 SQL 语句设置特定列的日期:

DATEDUE=convert(varchar,GETDATE(),103 )

但是,它会设置当前日期,例如 05/08/2015。我希望做的是将其设置为相同的 dd/mm/yyyy 格式,但将日期设置为 15 日,将月份设置为上个月,所以 05/08/2015 应改为 15/07/2015

【问题讨论】:

  • 即使当前日期是 16 号?你还想要上个月吗?
  • 顺便说一句..你们经营一艘艰难的船,总是将 DueDate 设置为过去的日期;)

标签: sql sql-server sql-server-2008


【解决方案1】:
select CONVERT(VARCHAR(10),
              DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) + 14
              ,103)

 Result: 15/07/2015

重要提示

由于DATEDUE 列存储日期,您应该真正使用sql server DATE 数据类型在该列中存储日期值。

【讨论】:

    【解决方案2】:

    如果您决定只需要本月最近的前 15 日,则可以使用它。

    SELECT CONVERT(VARCHAR(10),
           DATEADD(DAY,14,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()) - 
           (CASE WHEN DATEPART(DAY,GETDATE()) > 15 THEN 0 ELSE 1 END), 0)),
           103)
    

    05/08/2015 变为 15/07/201524/08/2015 变为 15/08/2015 而不是 >15/07/2015

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多