我要求每天从特定时间从SQL Server中提取记录,比如下午4点
因此,如果我今天下午3点运行查询,它应该从前一天下午4点到今天下午3点(23小时)提取记录。
另一方面,如果今天下午4:30运行查询,它应该从今天下午4点到下午4点半(仅半小时)查询等等
我如何在SQL Server中的纯SQL中执行此操作?
答案 0 :(得分:0)
请尝试以下查询,我为已在特定日期修改的存储过程创建了它:
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
您可以将“ CONVERT(日期,DATEADD(DD,-5,GETDATE()),101)”GEDATE传递给 - 减去5天,这只是为了获取记录我。
以小时为单位,您可以根据需要指定范围。
希望这对你有用。
答案 1 :(得分:0)
我认为这可能会对你有所帮助
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()
答案 2 :(得分:0)
我将如何做到这一点:
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子句。