如何从TSQL中的日期获取Quarter

Dav*_*vid 37 sql t-sql sql-server sql-server-2005

我在列中有不同的日期.例如20080102,20070821

我想在年份和季度转换这个日期.

20080102
20070821
Run Code Online (Sandbox Code Playgroud)

 

Year      Quarter
2008      2008-Q1
2007      2007-Q3
Run Code Online (Sandbox Code Playgroud)

我如何获得Quarter级别的详细信息.

DLe*_*Leh 81

SELECT DATEPART(QUARTER, @date)
Run Code Online (Sandbox Code Playgroud)

这将返回四分之一@date,假设@date是a DATETIME.

  • 我没见过.我正在为DATETIME类型寻找解决方案,并且在这里没有看到这个.我把它放在其他任何寻找具有日期时间对象的日期的季度的人. (4认同)

Stu*_*rth 12

SELECT DATENAME(Quarter, CAST(CONVERT(VARCHAR(8), datecolumn) AS DATETIME))
Run Code Online (Sandbox Code Playgroud)


小智 8

这是我如何做到的。非常简短,不依赖于临时表。

CAST(year(TheDate) AS char(4)) + '-Q' + 
CAST(CEILING(CAST(month(TheDate) AS decimal(9,2)) / 3) AS char(1))
Run Code Online (Sandbox Code Playgroud)

举个例子:

SELECT convert(char(10), getdate(), 101) AS TheDate, 
CAST(year(getdate()) AS char(4)) + '-Q' + 
    CAST(CEILING(CAST(month(getdate()) AS decimal(4,2)) / 3) AS char(1)) AS SelectQuarter 
Run Code Online (Sandbox Code Playgroud)

这将返回:

TheDate    SelectQuarter
---------- -------------
07/10/2013 2013-Q3
Run Code Online (Sandbox Code Playgroud)

显然,字符串本身可以更改为适合您自己的格式。希望这是有帮助的。