设置静态日和上个月GETDATE()SQL

时间:2015-08-05 16:01:35

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

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

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

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

2 个答案:

答案 0 :(得分:5)

select CONVERT(VARCHAR(10),
              DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) + 14
              ,103)

 Result: 15/07/2015

重要提示

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

答案 1 :(得分:0)

如果你决定只需要最近一个月的第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/2015 24/08/2015 变为 15/08/2015 而不是 15/07/2015