我正在尝试获取从本月初(上一年)到当天(上一年)的日期范围。有没有办法简化这段代码?
SELECT 'From the beginning of month to this day, previous year' AS Label,
CONVERT (DATETIME, CAST (DATEPART(YY, GETDATE()) - 1 AS CHAR (4)) + CASE
WHEN DATEPART(MM, GETDATE()) < 10 THEN '-0' + CAST (DATEPART(MM, GETDATE()) AS CHAR (1)) ELSE '-' + CAST (DATEPART(MM, GETDATE()) AS CHAR (2))
END + '-01') AS Begin_date,
CONVERT (DATETIME, CAST (DATEPART(YY, GETDATE()) - 1 AS CHAR (4)) + CASE
WHEN DATEPART(MM, GETDATE()) < 10 THEN '-0' + CAST (DATEPART(MM, GETDATE()) AS CHAR (1)) ELSE '-' + CAST (DATEPART(MM, GETDATE()) AS CHAR (2))
END + CASE
WHEN DATEPART(DD, GETDATE()) < 10 THEN '-0' + CAST (DATEPART(DD, GETDATE()) AS CHAR (1)) ELSE '-' + CAST (DATEPART(DD, GETDATE()) AS CHAR (2))
END) AS End_date
最佳答案
SELECT 'Anything' as Label
,DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) as firstdaythismonth
,DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) as today
,DATEADD(year, -1, DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)) as firstdaythismonth_lastyear
,DATEADD(year, -1, DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)) as today_lastyear
关于SQL Server : calculating date ranges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5539517/