【问题标题】:SQL time query from 6pm at night to 6amSQL时间查询从晚上6点到早上6点
【发布时间】:2013-03-08 11:50:06
【问题描述】:

如何统计晚上6点和早上6点之后的记录数?

这将持续到下午 12 点。

SELECT distinct count(barcode) c 
FROM table1 
where DAY(timestamp) = DAY(GETDATE())
  AND MONTH(timestamp) = MONTH(GETDATE())
  AND YEAR(timestamp) = YEAR(GETDATE())
  AND datepart(hh,timestamp) >= 18 
  AND datepart(hh,timestamp) >= 6;

【问题讨论】:

  • 请问什么版本的 SQL Server?
  • 版本 SQL 服务器 2008
  • 请您说的更清楚些。您是在寻找“今天下午 6 点到明天早上 6 点”、“昨天下午 6 点到今天早上 6 点”还是“今天早上 6 点之前或今天下午 6 点之后”?
  • 另外请不要使用timestamp作为列名。它不仅完全模糊(what的时间戳?),它还是一个保留字。

标签: sql sql-server sql-server-2008


【解决方案1】:

我想这可能就是您想要的。它从 GETDATE() 调用中删除任何秒数,并为其添加适当的小时数。

SELECT COUNT(barcode)
FROM table1
WHERE timestamp >= DATEADD(HOUR,18,CONVERT(VARCHAR(10), GETDATE(),110))
  AND timestamp <= DATEADD(HOUR,6,CONVERT(VARCHAR(10), GETDATE()+1,110))

SQL Fiddle Demo

【讨论】:

    【解决方案2】:

    这个怎么样?

    其中 datefunction(timestamp)>=getdate()-1 和 (datepart(hh,timestamp)>=18 或 datepart(hh,timestamp)

    datefunction 将日期时间转换为日期

    【讨论】:

    • “datefunction 将 datetime 转换为 date”是指 CONVERT(DATE, [timestamp]) 吗?此外,您的 OR 子句格式不正确 - 如果没有正确的括号,这不会包括所有日期上午 6 点之前的所有行吗?
    【解决方案3】:

    如果您想按天计算事物,但要让一天从下午 6 点开始。而不是午夜,只需在时间上添加一个偏移量:

    select cast(timestamp + 0.25 as date) as theday, count(barcode)
    from table1
    group by cast(timestamp + 0.25 as date)
    order by theday desc;
    

    如果您想在下午 6 点进行计数。 - 早上 6 点多天:

    select cast(timestamp + 0.25 as date) as theday, count(barcode)
    from table1
    where datepart(hh, timestamp) in (18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5)
    group by cast(timestamp + 0.25 as date)
    order by theday desc;
    

    最近一天,您可以:

    select top 1 cast(timestamp + 0.25 as date) as theday, count(barcode)
    from table1
    where datepart(hh, timestamp) in (18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5)
    group by cast(timestamp + 0.25 as date)
    order by theday desc;
    

    【讨论】:

    猜你喜欢
    • 2013-05-05
    • 2018-01-06
    • 2016-09-06
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多