SQL server如何赛选本月每天00:00:00到15:00:00的数据

SQL server如何赛选本月每天00:00:00到15:00:00的数据

SELECT *
FROM TABLE
WHERE time>= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) + '00:00:00'
  AND time<= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) + '15:00:00'

SELECT *
FROM your_table
WHERE YourDateTimeColumn >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) -- 今天的0点
  AND YourDateTimeColumn < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1) -- 明天的0点
  AND DATEPART(hour, YourDateTimeColumn) >= 0 -- 小时数 >= 0
  AND DATEPART(hour, YourDateTimeColumn) < 15 -- 小时数 < 15

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    可以使用以下SQL语句来筛选出当前月份每天00:00:00至15:00:00之间的数据:

    SELECT * 
    FROM your_table 
    WHERE Date >= DATEADD(day, DATEDIFF(day, '19000101', GETDATE()), '19000101') 
    AND Date >= DATEADD(hour, 0, DATEDIFF(hour, 0, GETDATE())) 
    AND Date < DATEADD(hour, 15, DATEDIFF(hour, 0, GETDATE()))
    

    其中,'your_table'为你要查询的表名,'Date'为你要筛选的日期字段名。

    解释:

    • DATEADD(day, DATEDIFF(day, '19000101', GETDATE()), '19000101')用于获取当前日期的日期部分。这是通过计算当前日期与'1900-01-01'之间的天数差得出的。
    • DATEADD(hour, 0, DATEDIFF(hour, 0, GETDATE()))用于获取当前日期的时间戳的小时部分,计算方式是将当前日期减去0小时的时间戳。
    • DATEADD(hour, 15, DATEDIFF(hour, 0, GETDATE()))用于获取当前日期的时间戳的小时部分加上15小时的时间戳。

    综合以上三个条件即可筛选出当前月份每天00:00:00至15:00:00之间的数据。

    注意,以上代码中的GETDATE()函数会返回数据库服务器的当前日期和时间,因此需要根据需要进行时区调整。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^