如何解决以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 举报,一经查实,本站将立刻删除。