HDB*_*HDB 4 sql t-sql sql-server
如何修改以下声明以获取上一年的第一个日期(最好不引入其他报价)
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), -1)
Run Code Online (Sandbox Code Playgroud)
如果您SQL Server 2012+使用DATEFROMPARTS:
SELECT DATEFROMPARTS ( DATEPART(yyyy, GETDATE()) - 1, 1, 1 )
Run Code Online (Sandbox Code Playgroud)
更好的答案是:
SELECT DATEADD(yy,DATEDIFF(yy,0,GETDATE())-1,0)
Run Code Online (Sandbox Code Playgroud)
如果您了解原始版本的工作原理,您就知道将 -1 放在哪里。
DATEADD 的参数为 DATEADD(interval, Increment int, expression Smalldatetime)。
因此,在上面的表达式中,DATEDIFF 函数返回一个整数,即当前日期和日期零 (0) 之间的年差。
上述语句中的表达式接受零 (0) 作为小日期时间。
因此,它将“日期零”和“当前日期”之间的年数添加到日期零。
日期零是 1900 年 1 月 1 日,因此无论提供的日期是什么,都会为您提供 1 月 1 日。
以下为您提供零日期:
select dateadd(yy,0,0)
Run Code Online (Sandbox Code Playgroud)
因此,要再返回一年,只需从间隔中减去 1,间隔就变为:
DATEDIFF(yy,0,GETDATE())-1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18728 次 |
| 最近记录: |