首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取前一年的第一个日期

获取前一年的第一个日期
EN

Stack Overflow用户
提问于 2015-11-21 23:02:01
回答 4查看 30.5K关注 0票数 10

如何修改下面的语句以获得前一年的第一个日期(最好不引入额外的引号)

代码语言:javascript
复制
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), -1)
EN

回答 4

Stack Overflow用户

发布于 2015-11-21 23:04:07

如果使用SQL Server 2012+,请使用

代码语言:javascript
复制
SELECT DATEFROMPARTS ( DATEPART(yyyy, GETDATE()) - 1, 1, 1 )
票数 13
EN

Stack Overflow用户

发布于 2015-11-21 23:05:06

让它工作了

代码语言:javascript
复制
DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))
票数 6
EN

Stack Overflow用户

发布于 2020-05-06 12:09:05

更好的答案是:

代码语言:javascript
复制
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日。

下面给出的是零日期:

代码语言:javascript
复制
select dateadd(yy,0,0)

所以再回到一年前,你只需从间隔中减去1,那么间隔就变成了:

代码语言:javascript
复制
DATEDIFF(yy,0,GETDATE())-1
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33844830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档