SQL中下个月的增量日期

时间:2019-02-12 13:23:52

标签: sql date sql-server-2012

我有类似的要求,我有一个月要向SQL Server 2012馈送文件,但我想转换与下个月的文件相同的文件。

例如,我有以下内容

02/22/2018 02/23/2018 02/24/2018

我想要03/22/2018 03/23/2018 02/24/2018

我能够做到这一点,但是当我遇到以下情况时会遇到问题。

02/28/2018 02/24/2018

我想要03/31/2018 03/31/2018

我已经设置了正常的日历,可以使用。有人可以帮忙吗。

2 个答案:

答案 0 :(得分:0)

您可以像下面这样使用DATEADD()函数:

SELECT DATEADD(month, 1, '02/22/2018') AS DateAdd;

答案 1 :(得分:0)

我猜您正在寻找EOMONTH函数

这样的想法可能会帮助您解决问题

DECLARE @date VARCHAR(10) = '02/28/2019'

SELECT CASE WHEN (EOMONTH(@date) = FORMAT(CAST(@date AS DATETIME),'yyyy-MM-dd')) 
                  THEN EOMONTH(DATEADD(month,1,@date))
            ELSE  DATEADD(month,1,@date)
       END

注意:我使用了格式化功能,因为EOMONTH以'yyyy-MM-dd'格式返回日期

更新

DECLARE @dates TABLE
(
  FromDate DATETIME, 
  ToDate DATETIME
)

INSERT INTO @dates (FromDate)
VALUES('12/31/2017'),('1/31/2018'),('2/28/2018'),('3/31/2018')



select * from @dates

UPDATE @dates 
SET ToDate =CASE WHEN (EOMONTH(FromDate) = FORMAT(CAST(FromDate AS DATETIME),'yyyy-MM-dd')) 
                  THEN EOMONTH(DATEADD(month,1,FromDate))
            ELSE  DATEADD(month,1,FromDate)
       END

       SELECT * FROM @dates

运行此命令,您将看到最终输出