TSQL捕捉到窗口的前一小时或X分钟

TSQL捕捉到窗口的前一小时或X分钟,tsql,time,Tsql,Time,在TSQL中,如何将前一个小时捕捉到该小时 例如,如果现在是2:33,我如何获取CreationDate(日期时间字段)大于或等于1:00且小于2:00的字段 我还希望以10分钟的间隔完成此操作(例如,如果当前为:14,则捕捉到先前的:00-:10;如果当前为:06,则捕捉到另一个示例:50-:00) 这将为您提供当前小时的开始和结束时间: select dateadd(hour, datepart(hour, getdate()), dateadd(day, 0,

在TSQL中,如何将前一个小时捕捉到该小时

例如,如果现在是2:33,我如何获取
CreationDate
(日期时间字段)大于或等于1:00且小于2:00的字段


我还希望以10分钟的间隔完成此操作(例如,如果当前为:14,则捕捉到先前的:00-:10;如果当前为:06,则捕捉到另一个示例:50-:00)

这将为您提供当前小时的开始和结束时间:

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保持良好的堆栈溢出性能

这将为您提供当前小时的开始和结束时间:

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 LowerDate UpperDate 2011-05-10 20:07:10.243 2011-05-10 20:00:00.000 2011-05-10 20:10:00.000
似乎是当前的10分钟block@Kyle布兰德:对,答案被编辑成显示前10分钟的片段。啊,你比我快了两秒:-P
CurrentDate LowerDate UpperDate 2011-05-10 20:07:10.243 2011-05-10 20:00:00.000 2011-05-10 20:10:00.000
似乎是当前的10分钟block@Kyle勃兰特:对,答案经过编辑,显示了前10分钟的封锁。啊,你比我领先了2秒:-P