1
在TSQL中,我如何才能獲得前一小時捕捉到的小時。上一小時或TSQL中的X分鐘捕捉到窗口
因此,例如,如果現在是2:33,我如何獲得CreationDate
(日期時間字段)大於或等於1:00且小於2:00的字段。
我也想用10分鐘的時間間隔來做到這一點(如果它是當前:如果它是當前:14例如,或另一個例子:50:00,如果它是:06) 。
在TSQL中,我如何才能獲得前一小時捕捉到的小時。上一小時或TSQL中的X分鐘捕捉到窗口
因此,例如,如果現在是2:33,我如何獲得CreationDate
(日期時間字段)大於或等於1:00且小於2:00的字段。
我也想用10分鐘的時間間隔來做到這一點(如果它是當前:如果它是當前:14例如,或另一個例子:50:00,如果它是:06) 。
這將讓你當前小時的開始和結束:
select dateadd(hour, datepart(hour, getdate()),
dateadd(day, 0, datediff(day, 0, getdate())))
, dateadd(hour, 1+datepart(hour, getdate()),
dateadd(day, 0, datediff(day, 0, getdate())))
說明:dateadd(day, 0, datediff(day, 0, getdate()))
讓你今天的開始。然後你添加當前小時。
沿着相同的路線上一10分鐘塊:
select dateadd(minute, datepart(minute, getdate())/10 * 10 - 10,
dateadd(hour, datepart(hour, getdate()),
dateadd(day, 0, datediff(day, 0, getdate()))))
, dateadd(minute, datepart(minute, getdate())/10 * 10,
dateadd(hour, datepart(hour, getdate()),
dateadd(day, 0, datediff(day, 0, getdate()))))
或寫它的另一種方式:
declare @lowerBound datetime = dateadd(minute, datepart(minute, getdate())/10 * 10 - 10,
dateadd(hour, datepart(hour, getdate()),
dateadd(day, 0, datediff(day, 0, getdate()))))
declare @upperBound datetime = dateadd(minute, datepart(minute, getdate())/10 * 10,
dateadd(hour, datepart(hour, getdate()),
dateadd(day, 0, datediff(day, 0, getdate()))))
select @lowerBound, @upperBound
PS跟上堆棧溢出性能良好的工作!
'的currentdate \t \t LowerDate UpperDate 2011-05-10 20:07:10.243 \t 2011-05-10 20:00:00.000 \t 2011-05-10 20:10:00.000'似乎是當前10分鐘塊 – 2011-05-10 20:07:48
@凱爾布蘭特:對,回答編輯顯示前10分鐘的塊。 – Andomar 2011-05-10 20:10:40
所以只是 - 10第一次,沒有+10下次我想... – 2011-05-10 20:10:42