下面的查询显示了给定日期(最近在Time_Stamp
列中)的后三个季度的第一天和最后一天。我试图改变输出结构以显示第二个查询。格式化此日期范围的输出查询结果
柱Time_Stamp
:
Time_Stamp
-----------
2014-06-04 16:01:14.000
2014-06-04 15:55:33.000
2014-06-04 15:45:05.000
新建查询
SELECT
--first day of next quarter
DATEADD(qq, DATEDIFF(qq, 0, MAX(Time_Stamp)) + 1, 0) as StartDate,
--last day of next quarter
DATEADD (dd, -1, DATEADD(qq, DATEDIFF(qq, 0, MAX(Time_Stamp)) +2, 0)) as EndDate,
--first day 2 quarters ahead
DATEADD(qq, DATEDIFF(qq, 0, MAX(Time_Stamp)) + 2, 0) as StartDate,
--last day, 2 quarters ahead
DATEADD (dd, -1, DATEADD(qq, DATEDIFF(qq, 0, MAX(Time_Stamp)) +3, 0)) as EndDate,
--first day 3 quarters ahead
DATEADD(qq, DATEDIFF(qq, 0, MAX(Time_Stamp)) + 3, 0) as StartDate,
--last day 3 quarters ahead
DATEADD (dd, -1, DATEADD(qq, DATEDIFF(qq, 0, MAX(Time_Stamp)) +4, 0)) as EndDate
FROM Survey
WHERE MainHospital = 'Hospital1'
输出
StartDate EndDate StartDate EndDate StartDate EndDate
----------------------- ----------------------- ----------------------- ----------------------- ----------------------- -----------------------
2014-07-01 00:00:00.000 2014-09-30 00:00:00.000 2014-10-01 00:00:00.000 2014-12-31 00:00:00.000 2015-01-01 00:00:00.000 2015-03-31 00:00:00.000
第二查询其给出错误的日期,但首选格式:
WITH Start AS
(
SELECT
-- Returns first day of next quarter
DATEADD(qq, DATEDIFF(qq, 0, MAX(Time_Stamp)) + 1, 0) as StartDate,
-- Returns last day of next quarter
DATEADD (dd, -1, DATEADD(qq, DATEDIFF(qq, 0, MAX(Time_Stamp)) +2, 0)) as EndDate
FROM Survey
WHERE MainHospital = 'Hospital1'
),
Results AS
(
SELECT StartDate, EndDate from Start
UNION
SELECT DATEADD(DAY, 1, EndDate), DATEADD(day, 91, EndDate) FROM Start
UNION
SELECT DATEADD(DAY, 92, EndDate), DATEADD(day, 182, EndDate) FROM Start
)
SELECT LEFT(StartDate,11) AS StartDate, LEFT(EndDate,11) AS EndDate FROM Results`
首选输出格式:
StartDate EndDate
----------- -----------
Jul 1 2014 Sep 30 2014
Oct 1 2014 Dec 30 2014
Dec 31 2014 Mar 31 2015
你已经基本上问同样的问题约3-4倍现在,这是一个类,你不明白的季度日期开始和结束的SQL?这是给你几次。 –
如果你想检查,我也为Kevin Cook每次创建了答案。如果你想帮忙而不是巨魔,我又添加了一个新的答案。 – user3749447
这些是完全不同的问题,我自己拿到了四分之一的日期。这个你决定投降的问题并没有要求提供季度日期。只格式化。 – user3749447