【发布时间】:2009-11-26 10:27:50
【问题描述】:
我是 SQL Server 的新手,天真地认为会有一个 QUARTER() 函数,可惜没有,而且有些谷歌搜索没有找到任何有用的东西!
基本上我想要实现的是,对于我数据库中的所有行,我想要按季度分组的那些行的计数。
如果可能的话,我希望通过查询保留所有计算,但如果不是,则由 PHP 启动一切。
【问题讨论】:
标签: php sql-server date
我是 SQL Server 的新手,天真地认为会有一个 QUARTER() 函数,可惜没有,而且有些谷歌搜索没有找到任何有用的东西!
基本上我想要实现的是,对于我数据库中的所有行,我想要按季度分组的那些行的计数。
如果可能的话,我希望通过查询保留所有计算,但如果不是,则由 PHP 启动一切。
【问题讨论】:
标签: php sql-server date
这应该可以解决问题,前提是您当然在该行中有一个日期时间列:)
SELECT datepart(qq, my_date_column) as quarter, count(*) as rows
from my_table
group by datepart(qq, my_date_column)
当然,如果你有超过一年的数据,你可能还想加上datepart(yyyy, my_date_column)
【讨论】:
我用
select Datename(quarter,MYDATECOLUMN_NAME)
MYDATECOLUMN_NAME 是日期格式。
【讨论】:
select
CONVERT(DATETIME, CONVERT(CHAR(8),
DATEPART(YEAR, yourDateColumn) * 10000 +
( DATEPART(QUARTER, @date) * 3 - 2) * 100 +
1),
112) from...
取自这里:
http://geertverhoeven.blogspot.com/2007/01/get-quarter-of-given-date-in-datetime.html
或者您可以使用该链接评论中提到的 SQL 来获取季度的第一天:
DATEADD(qq,DATEDIFF(qq,0,@date),0)
【讨论】:
我只是在日期上使用了 Month 函数,然后使用了 Case 函数来组织它们:
Case When Month(date) in (1,2,3) then '1stQtr'
When Month(date) in (4,5,6) then '2ndQtr'
When Month(Date) in (7,8,9) then "3rdQtr'
When Month(Date) in (10,11,12) then '4thQty' END AS Quarter
【讨论】: