Sql server 从时间戳创建日期范围
下面的查询从列Sql server 从时间戳创建日期范围,sql-server,Sql Server,下面的查询从列时间戳中获取最大日期,作为调查中的起始日期。为EndDate添加90天。然后,只需在原始的结束日期上添加更多,就可以创建两个间隔为90天的范围 我试图让起始日期在1月1日、4月1日、7月1日或10月1日的4个桶内。如果最大时间戳在这些日期中的1个之前,那么这将是我的范围的第一个开始日期…因此,对于下面的示例,最大时间戳是6月4日,因此开始日期必须是7月1日。这在sql server中可行吗 医院时间戳1 Time_Stamp ----------- 2014-06-04 16:01
时间戳
中获取最大日期,作为调查
中的起始日期。为EndDate添加90天。然后,只需在原始的结束日期上添加更多,就可以创建两个间隔为90天的范围
我试图让起始日期在1月1日、4月1日、7月1日或10月1日的4个桶内。如果最大时间戳在这些日期中的1个之前,那么这将是我的范围的第一个开始日期…因此,对于下面的示例,最大时间戳是6月4日,因此开始日期必须是7月1日。这在sql server中可行吗
医院时间戳1
Time_Stamp
-----------
2014-06-04 16:01:14.000
2014-06-04 15:55:33.000
2014-06-04 15:45:05.000
2014-06-04 15:36:15.000
2014-06-04 15:00:34.000
2014-06-04 14:35:24.000
2014-06-04 14:04:50.000
2014-06-04 13:46:55.000
2014-06-04 13:23:57.000
2014-06-04 11:27:51.000
电流输出:
StartDate EndDate
----------- -----------
Jun 4 2014 Sep 2 2014
Sep 3 2014 Dec 2 2014
Dec 3 2014 Mar 3 2015
质疑
只是一个更新,这给了我第一个开始日期需要的东西
--Return first day of next quarter
SELECT DATEADD(qq, DATEDIFF(qq, 0, MAX(Time_Stamp)) + 1, 0)
FROM Survey
WHERE MainHospital = 'Hospital1'
看来你只是想计算你约会的四分之一,对吗 如果是,您可以使用:
SELECT DATENAME(Quarter, CAST(CONVERT(VARCHAR(8), GETDATE()) AS DATETIME)) as Quarter
您可以使用DATEPART(QUARTER,@Date)确定所选记录的季度,然后使用此查询查找该季度的开始/结束日期
像这样使用它:
SELECT DATEADD(QUARTER, DATEPART(QUARTER, Time_Stamp) - 2, DATEADD(YEAR, DATEDIFF(YEAR, 0, Time_Stamp), 0)) AS StartDate,
DATEADD(SECOND, -1, DATEADD(QUARTER, DATEPART(QUARTER, Time_Stamp) - 1, DATEADD(YEAR, DATEDIFF(YEAR, 0, Time_Stamp), 0))) AS EndDate
FROM Hospital1
要计算季度日期范围,请执行以下操作:
select DATEADD(qq, datediff(qq, 0, getdate()),0) as first
select dateadd(dd, -1, DATEADD(qq, datediff(qq, 0, getdate()) +1, 0)) as last
可能包括像这样的
DATENAME(Quarter,CAST(将VARCHAR(8),Time\u Stamp)转换为DATETIME))
yep!刚刚发现,由于我正在创建90天的间隔,所以不确定如何将其包含在查询中。那么,您是否也在查找该季度的开始和结束日期?是的,选择时间戳的前1个最大值,确定从该日期算起的下一个季度(不是当前),并将其作为我查询中的第一个起始日期,我在其中添加天数以获取间隔。这看起来很有用,但不知道如何将其合并到我的查询和我的列时间戳中
SELECT DATEADD(QUARTER, DATEPART(QUARTER, Time_Stamp) - 2, DATEADD(YEAR, DATEDIFF(YEAR, 0, Time_Stamp), 0)) AS StartDate,
DATEADD(SECOND, -1, DATEADD(QUARTER, DATEPART(QUARTER, Time_Stamp) - 1, DATEADD(YEAR, DATEDIFF(YEAR, 0, Time_Stamp), 0))) AS EndDate
FROM Hospital1
select DATEADD(qq, datediff(qq, 0, getdate()),0) as first
select dateadd(dd, -1, DATEADD(qq, datediff(qq, 0, getdate()) +1, 0)) as last