将年份(aaaa)和季度(1到4)转换为SQL Server中的Datetime

kok*_*kou 2 sql sql-server datetime

我正在研究数据,我有一个year专栏(2015年,2016年,2013年......)和一个季度(1或2或3或4)专栏.我想将它们转换为新的数据类型列datetime.我已经搜索了一点,我发现了另一个问题SO 这里.

该页面的答案是:

Select 
    dateadd(day, -1, dateadd(year, @year - 1900, dateadd(quarter, @qq, 0)))
Run Code Online (Sandbox Code Playgroud)

我认为这是解决方案,但我很难理解它,我不希望(如果可能的话)使用变量,而只是在查询中转换.

Gor*_*off 5

在SQL Server 2012+中,您将使用datefromparts()该季度的第一天:

select datefromparts( YearColumn, QuarterColumn * 3 - 2, 1)
Run Code Online (Sandbox Code Playgroud)

奇怪的dateadd()表达用于获得一年的第一天.