gpt4 book ai didi

sql - 如何在 SQL 中编写 where 子句以按一天中的时间过滤 DATETIME 列?

转载 作者:行者123 更新时间:2023-12-04 07:08:43 26 4
gpt4 key购买 nike

我有带有 DATETIME 列时间戳的数据,我想将其过滤到 DATETIME 位于任何一天的上午 9:30 到下午 5:30 之间的记录集。做到这一点的最佳方法是什么?

更新:更改是因为我需要精确到分钟,而不仅仅是小时。对于那个很抱歉。

最佳答案

你总是可以把它写成一个用户定义的函数,特别是如果你需要定期这样做

CREATE function  dbo.timepart (@date as SMALLDATETIME)
RETURNS SMALLDATETIME
AS
BEGIN
RETURN @date - DATEADD(d, DATEDIFF(d,0,@date), 0)
END

然后像这样使用
SELECT * FROM table
WHERE dbo.timepart(date_field) BETWEEN '9:30' AND '17:30'

在 SQL Server 2005 中使用以下内容进行测试
DECLARE @dates TABLE (date DATETIME)

DECLARE @date DATETIME
SET @date = '20 MAR 2009'

WHILE @date < '22 MAR 2009'
BEGIN
INSERT INTO @dates VALUES(@date)
SET @date = DATEADD(hour, 1, @date)
END

SELECT *
FROM
@dates
WHERE
dbo.timepart(date) BETWEEN '9:30' AND '17:30'

结果是
date
-----------------------
2009-03-20 10:00:00.000
2009-03-20 11:00:00.000
2009-03-20 12:00:00.000
2009-03-20 13:00:00.000
2009-03-20 14:00:00.000
2009-03-20 15:00:00.000
2009-03-20 16:00:00.000
2009-03-20 17:00:00.000
2009-03-21 10:00:00.000
2009-03-21 11:00:00.000
2009-03-21 12:00:00.000
2009-03-21 13:00:00.000
2009-03-21 14:00:00.000
2009-03-21 15:00:00.000
2009-03-21 16:00:00.000
2009-03-21 17:00:00.000

关于sql - 如何在 SQL 中编写 where 子句以按一天中的时间过滤 DATETIME 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/710255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com