在sql server中每天从特定小时获取记录

时间:2016-02-22 12:03:41

标签: sql-server

我要求每天从特定时间从SQL Server中提取记录,比如下午4点 因此,如果我今天下午3点运行查询,它应该从前一天下午4点到今天下午3点(23小时)提取记录。
另一方面,如果今天下午4:30运行查询,它应该从今天下午4点到下午4点半(仅半小时)查询等等

我如何在SQL Server中的纯SQL中执行此操作?

3 个答案:

答案 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

兴趣点:

  1. CAST(GETDATE() AS date)将返回当前日期时间的日期部分。
  2. 回到日期时间允许您使用DateAdd来获得所需的时间
  3. 使用带有日期值的-1从日期中减去一天(当然+1会添加一天)
  4. 使用CASE...WHEN允许您编写一个适合问题中描述的两种情况的where子句。