【发布时间】:2020-04-26 07:09:01
【问题描述】:
如何以yyyy-mm-dd 格式获取上一年第一个月的第一天? IE。 2019-01-01。
这是我尝试过的代码:
SELECT DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))
【问题讨论】:
标签: sql sql-server tsql date select
如何以yyyy-mm-dd 格式获取上一年第一个月的第一天? IE。 2019-01-01。
这是我尝试过的代码:
SELECT DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))
【问题讨论】:
标签: sql sql-server tsql date select
您可以在 SQL Server 中使用DATEFROMPARTS() 函数从给定的年、月和日期以整数形式创建日期,如下所示。要获得上一年,您可以使用 Year() 函数并从中减去 1。第一个日期和月份总是1,所以这里是硬编码的。
declare @IntYear int = Year(Getdate()) - 1 --Previous Year
Select datefromparts(@Intyear, 1, 1)
要获得不同格式的输出,您可以关注link。
【讨论】:
你基本上拥有它。你只需要FORMAT 函数。
SELECT FORMAT (DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0)), 'yyyy-MM-dd') as date
【讨论】:
您似乎希望生成一个字符串,而不是日期。考虑使用日期函数和字符串连接:您只需从当前日期减去 1 年,然后附加 '-01-01'
concat_ws('-', year(getdate()) - 1, '01', '01')
【讨论】: