代码之家  ›  专栏  ›  技术社区  ›  Casey ScriptFu Pharr

如何在日期范围之间以及在SQL中的时间间隔内查询日期时间字段

  •  1
  • Casey ScriptFu Pharr  · 技术社区  · 6 年前

    我需要使用具有名为“createdDate”字段的数据生成报告。此字段是日期和时间戳。我需要创建一个查询,它执行如下操作:选择CreatedDate在“01/01/2018”到“06/02/2018”之间的所有行,并且仅在“13:30:00”到“18:00:00”之间的日期范围内。我在努力实现这一目标时遇到了一些问题。

    下面是我尝试的一个例子:

    SELECT 
        *
    FROM [tablename]
    WHERE [CreatedBy] = '792'
          AND ([CreatedDate] >= '2018-01-01'
               OR [CreatedDate] <= CAST(GETDATE() AS DATE))
          AND ([CreatedDate] BETWEEN '13:30:00' AND '16:00:00')
    ORDER BY 
        [ID] DESC;
    

    现在这不起作用,但不确定如何实现这一点。任何帮助都将不胜感激。-谢谢-

    3 回复  |  直到 6 年前
        1
  •  2
  •   maddy    6 年前

    试试这个 select * from [tablename] where CreatedBy = '792' and (CreatedDate >= '2018-01-01' or CreatedDate <= CAST(GETDATE() as DATE)) AND (CONVERT(VARCHAR(8),CreatedDate ,108) BETWEEN '13:30:00' AND '16:00:00' ORDER BY ID desc

        2
  •  3
  •   dimo raichev    6 年前

    TIME

    select * from [tablename] 
    where CreatedBy = '792' 
    and (CreatedDate >= '2018-01-01' or CreatedDate <= CAST(GETDATE() as DATE)) AND 
    (TIME(CreatedDate) BETWEEN TIME('13:30:00') AND TIME('16:00:00')) ORDER BY ID desc
    
        3
  •  0
  •   Divine    6 年前

    (CreatedDate BETWEEN '13:30:00' AND '16:00:00') ORDER BY ID desc
    

    and (DATEPART(Hour, CreatedDate) between 12.5 and 15