Pra*_*t16 4 sql-server sql-server-2008
我正在使用SQL Server2008。我想获取一年中所有季度的开始日期和结束日期。例如,如果我在查询中传递2013,则输出应为
StartDate EndDate QuarterNo
-------------------------------------------------------------
2013-04-01 00:00:00.000 2013-06-30 00:00:00.000 1
2013-07-01 00:00:00.000 2013-09-30 00:00:00.000 2
2013-10-01 00:00:00.000 2013-12-31 00:00:00.000 3
2014-01-01 00:00:00.000 2014-03-31 00:00:00.000 4
Run Code Online (Sandbox Code Playgroud)
由于从4月1日开始的财政年度,我想从4月1日开始为第一季度。如何获得此输出?感谢帮助...
select
dateadd(M, 3*number, CONVERT(date, CONVERT(varchar(5),@year)+'-1-1')),
dateadd(D,-1,dateadd(M, 3*number+3, CONVERT(date, CONVERT(varchar(5),@year)+'-1-1'))),
Number QuarterNo
from master..spt_values
where type='p'
and number between 1 and 4
Run Code Online (Sandbox Code Playgroud)
您可能需要使用日期,而不是日期时间,否则该季度的最后一天中的任何时间都不包含在该季度中(例如:2013-06-30 14:15)
反之,使用 datepart
select ((DATEPART(q,@date)+2) % 4)+1
Run Code Online (Sandbox Code Playgroud)
小智 5
我最喜欢的方式,但 EOMONTH 和 DATEFROMPARTS 在 SQLServer 2012 之前不存在:
DECLARE
@FISCAL_YEAR INT = 2013,
@QUATER INT = 2
SELECT
DATEFROMPARTS(@fiscal_year,(@Quater * 3)-2,1) AS QuaterStart,
EOMONTH(DATEFROMPARTS(@fiscal_year,@Quater * 3,1)) AS QuaterEnd
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19193 次 |
| 最近记录: |