SQL中获取指定两个日期时间点或者时间段内所有记录语句 - 风灵溪清

时间:2024-03-09 07:13:37

SQL中获取指定两个日期时间点或者时间段内所有记录语句

经常有项目中会用到查询时间段早上9点到第二天7点之间的所有记录,并根据当前时间来统计分析所有当日当班时间段内的所有定单总数(对比现在的时间和固定两个时间点中间的所有记录)可以如下去操作:

Declare @TranslateStartTime nvarchar(20)
Declare @TranslateEndTime nvarchar(20)

if DatePart(hour,getdate())>9
begin
--早上9点以后
set @TranslateStartTime=convert(nvarchar(4),DatePart(yyyy,getdate()),4)
set @TranslateStartTime=@TranslateStartTime + \'-\' +convert(nvarchar(4),DatePart(m,getdate()),4)
set @TranslateStartTime=@TranslateStartTime + \'-\' +convert(nvarchar(4),DatePart(day,getdate()),4)
set @TranslateStartTime=@TranslateStartTime + \' \' +\'9:00:00\'

set @TranslateEndTime=convert(nvarchar(4),DatePart(yyyy,dateadd(day,1,getdate())),4)
set @TranslateEndTime=@TranslateEndTime + \'-\' +convert(nvarchar(4),DatePart(m,dateadd(day,1,getdate())),4)
set @TranslateEndTime=@TranslateEndTime + \'-\' +convert(nvarchar(4),DatePart(day,dateadd(day,1,getdate())),4)
set @TranslateEndTime=@TranslateEndTime + \' \' +\'7:00:00\'

end

else
begin
--早上9点之前
set @TranslateStartTime=convert(nvarchar(4),DatePart(yyyy,dateadd(day,-1,getdate())),4)
set @TranslateStartTime=@TranslateStartTime + \'-\' +convert(nvarchar(4),DatePart(m,dateadd(day,-1,getdate())),4)
set @TranslateStartTime=@TranslateStartTime + \'-\' +convert(nvarchar(4),DatePart(day,dateadd(day,-1,getdate())),4)
set @TranslateStartTime=@TranslateStartTime + \' \' +\'9:00:00\'

set @TranslateEndTime=convert(nvarchar(4),DatePart(yyyy,getdate()),4)
set @TranslateEndTime=@TranslateEndTime + \'-\' +convert(nvarchar(4),DatePart(m,getdate()),4)
set @TranslateEndTime=@TranslateEndTime + \'-\' +convert(nvarchar(4),DatePart(day,getdate()),4)
set @TranslateEndTime=@TranslateEndTime + \' \' +\'7:00:00\'

end

select @TranslateStartTime

select @TranslateEndTime

SQL查询语句所有当前时间段内的记录:
Select * from OrderList Where  DateDiff(mi,@TranslateStartTime,translatetime)>=0 and DateDiff(mi,@TranslateEndTime,translatetime)<=0)