微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以YYYY-MM-DD格式获取一年前的最后一天

如何解决以YYYY-MM-DD格式获取一年前的最后一天

如何获取一年前的最后一天?例如2019-08-31,以便每个月产生一年前的最后一天。

我尝试过:

select convert(varchar(10),dateadd(s,-1,dateadd(mm,datediff(m,getdate()),0)),120)

解决方法

您快到了,但是您可以使用DATEADD来计算1年前的日期,然后可以使用EOMONTH函数来获取该月的最后一天。比尝试弄乱DATEDIFF更容易。

这将起作用:

SELECT CONVERT(VARCHAR(10),EOMONTH(DATEADD(year,-1,GETDATE())),120)

演示:https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=ade8d8251e653a8791ae3f5d51120f46

文档:https://docs.microsoft.com/en-us/sql/t-sql/functions/eomonth-transact-sql?view=sql-server-ver15

,

我个人会使用DATEFROMPARTS,因为您可以对月份和日期值进行硬编码(这与一年中的最后一个月份和日期从12月31日开始发生变化不同):

SELECT DATEFROMPARTS(YEAR(GETDATE())-1,12,31);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。