我要求每天从Server中提取特定时间的记录,比如下午4时
所以,如果我今天下午3点运行查询,它应该从前一天下午4点的到今天下午3点(23小时)的中提取记录。
另一方面,如果今天下午4:30运行查询,则应该将查询从今天的下午4:30拉到下午4:30的(只运行半个小时)等等。
如何在Server中的普通SQL中执行此操作?
发布于 2016-02-22 13:45:02
我会这样做:
SELECT *
FROM TableName
WHERE ColumnName <= GETDATE()
AND ColumnName >=
CASE WHEN DATEPART(HOUR, GETDATE()) < 4 THEN
DATEADD(HH, 4, CAST(CAST(GETDATE()-1 AS date) AS datetime))
ELSE
DATEADD(HH, 4, CAST(CAST(GETDATE() AS date) AS datetime))
END兴趣点:
CAST(GETDATE() AS date)将返回当前日期时间的日期部分。DateAdd获取您想要的时间-1从日期减去一天(当然,+1会添加一天)CASE...WHEN,您可以编写一个where子句,适用于问题中描述的两种场景。发布于 2016-02-22 12:15:39
请尝试以下查询,我已经为在特定日期修改的存储过程创建了该查询:
Select * from sys.procedures where CONVERT(date,modify_date,101) =
CONVERT(date,DATEADD(DD,-5, GETDATE()),101)
AND DATEPART(hh,modify_date) >= 1 AND DATEPART(hh,modify_date) <= 22 您可以将“转换(date,DATEADD(DD,-5,GETDATE(),101)”只传递到-减去5天,这只是为了为我获取记录。
在几个小时内,您可以指定您想要的范围。
希望这对你有用。
发布于 2016-02-22 12:23:42
我觉得这可能对你有帮助
select 1 from table where Col1 between case when hour(getdate())>4 then convert(datetime,convert(varchar(20),year(getdate()))+'-'+convert(varchar(20),month(getdate()))+'-'+convert(varchar(20),day(getdate()))+' 04:00') else dateadd(hh,-23,getdate()) end and getdate()https://stackoverflow.com/questions/35553149
复制相似问题