然后获取当前日期将每月输出2个截止日期

时间:2019-06-13 06:09:26

标签: sql-server

我想在SQL中获取当前日期,然后它将自动输出该日期的截止日期。

select cast(getdate() AS DATE)

示例:今天是6/13/2019,那么它应该输出该月的第二个截止日期

6/11/2019 - 6/25/2019

如果我选择6/10/2019,则输出应为

5/26/2019 - 6/10/2019

2 个答案:

答案 0 :(得分:0)

尝试一下

 Declare @Get_Date date=getdate()

Select iif
        (
            Datepart(day,@Get_Date)<11 or Datepart(day,@Get_Date) between 26 and 31
            ,Format(Dateadd(day,-5,EOMONTH(@Get_Date,iif(Datepart(day,@Get_Date) between 26 and 31,0,-1))),'dd/MM/yyyy')
            ,Format(Dateadd(day,11,EOMONTH(@Get_Date,-1)),'dd/MM/yyyy')
        ) as Cutoff_Start_Date,
        iif
        (
            Datepart(day,@Get_Date)<11 or Datepart(day,@Get_Date) between 26 and 31
            ,Format(Dateadd(day,10,EOMONTH(@Get_Date,iif(Datepart(day,@Get_Date) between 26 and 31,0,-1))),'dd/MM/yyyy')
            ,Format(Dateadd(day,25,EOMONTH(@Get_Date,-1)),'dd/MM/yyyy')
        ) as Cutoff_End_Date

答案 1 :(得分:0)

我认为您应该使用

Declare datetime @CurrentDate = GetDate(); -- 13Jun19 04:13:23
Declare datetime @D25OfMonth = GetDate() - DatePart(day, GetDate()) + 25; --25Jun19 04:13:23
Declare datetime @D10OfMonth = GetDate() - DatePart(day, GetDate()) + 11; --11Jun19 04:13:23 

但是这里有一个陷阱。您希望截止日期在哪一天(午夜,当前时间,中午)?您基本上是通过添加一个整数来操纵日期时间,从而向前(+)或向后(-)向前移动一天。