在SQL中采用日期变量并将其设置为年初和年底的最佳方式是什么?SQL - 修改日期
declare @calcDate date = '7/7/2016'
如何使用@calcDate获得'1/1/2016'和'12/31/2016'?
在SQL中采用日期变量并将其设置为年初和年底的最佳方式是什么?SQL - 修改日期
declare @calcDate date = '7/7/2016'
如何使用@calcDate获得'1/1/2016'和'12/31/2016'?
DECLARE @calcDate date = '7/7/2016'
SELECT
DATEADD(yy, DATEDIFF(yy,0,@calcDate), 0) AS BeginningOfYear,
DATEADD(yy, DATEDIFF(yy,0,@calcDate) + 1, -1) AS EndOfYear
这个答案看起来是正确的为什么没有评论的投票? –
@DaveKelly不是我的失望,但是这个答案是在没有关于RDBMS的标签时发布的,所以它可能对op来说是错误的。在这种情况下,它不是 – Lamak
我只想用datefromparts()
:
select datefromparts(year(@calcdate), 1, 1) as soy,
datefromparts(year(@calcdate), 12, 31) as eoy
SQL Server早期版本的需要奇怪日期运算。此功能在SQL Server 2012+中可用(请参阅here)。
对我来说似乎没有真正的“计算”在这里完成,因为今年的第一天总是1/1,最后一天总是12/31。我们只需要在问题这些追加的一年:
declare @calcDate date = '7/7/2016'
select cast(cast(year(@calcDate) as varchar(4)) + '0101' as date)
select cast(cast(year(@calcDate) as varchar(4)) + '1231' as date)
结果:
2016-01-01
2016-12-31
year
是在SQL Server 2008及更高版本。
请使用您正在使用的数据库引擎的标签。它甚至建议你在询问 – Lamak
时这样做,我不确定我是否理解你在问什么。我应该添加哪些其他标签? – Anagins
[sql]是语言,你可以使用SQL Server,MySQL,Oracle,Postgresql等。答案取决于你正在使用哪一个,所以在你的问题中加上相应的标签 – Lamak