如何修改下面的语句以获得前一年的第一个日期(最好不引入额外的引号)
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), -1)发布于 2015-11-21 23:04:07
如果使用SQL Server 2012+,请使用
SELECT DATEFROMPARTS ( DATEPART(yyyy, GETDATE()) - 1, 1, 1 )发布于 2015-11-21 23:05:06
让它工作了
DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))发布于 2020-05-06 12:09:05
更好的答案是:
SELECT DATEADD(yy,DATEDIFF(yy,0,GETDATE())-1,0)如果您了解原始代码的工作原理,就知道将-1放在哪里。
DATEADD的参数是DATEADD(interval,increment,expression smalldatetime)。
因此,在上面的表达式中,DATEDIFF函数返回一个整数,即当前日期和日期零(0)之间的年份差。
上面语句中的表达式接受零(0)作为小日期时间。
因此,它将“日期零”和“当前日期”之间的年数添加到日期零。
日期0是1900年1月1日,所以无论提供的日期是什么,都会得到1月1日。
下面给出的是零日期:
select dateadd(yy,0,0)所以再回到一年前,你只需从间隔中减去1,那么间隔就变成了:
DATEDIFF(yy,0,GETDATE())-1https://stackoverflow.com/questions/33844830
复制相似问题