gpt4 book ai didi

sql - 知道15分钟的日期间隔中的日期是SQL SERVER

转载 作者:行者123 更新时间:2023-12-01 09:47:09 26 4
gpt4 key购买 nike

sql fiddle example

我有这个表结构:

CREATE TABLE TIMETABLE
([ID] int, [Name] varchar(50), [StartDate] datetime, [EndDate] datetime)
;

INSERT INTO TIMETABLE
([ID], [Name], [StartDate], [EndDate])
VALUES
(1, 'John', '2017-01-29 16:00:00.000', '2017-01-29 16:12:00.000'),
(2, 'Mario', '2017-01-29 16:17:00.000', '2017-01-29 16:29:00.000'),
(3, 'Kate', '2017-01-15 10:35:00.000', '2017-01-15 10:40:00.000'),
(4, 'Maria', '2017-01-15 10:17:00.000', '2017-01-15 10:27:00.000'),
(5, 'Oliver', '2017-01-15 13:46:00.000', '2017-01-29 14:00:00.000')
;

结果是:

select * from TIMETABLE

ID Name StartDate EndDate
1 John 2017-01-29T16:00:00Z 2017-01-29T16:12:00Z
2 Mario 2017-01-29T16:17:00Z 2017-01-29T16:29:00Z
3 Kate 2017-01-15T10:35:00Z 2017-01-15T10:40:00Z
4 Maria 2017-01-15T10:17:00Z 2017-01-15T10:27:00Z
5 Oliver 2017-01-15T13:46:00Z 2017-01-29T14:00:00Z

我想知道从 15 分钟开始的范围是日期,例如:

   ID   Name    StartDate               EndDate                HourRangeTime
1 John 2017-01-29T16:00:00Z 2017-01-29T16:12:00Z 16:00

在示例中,开始日期和结束日期在 16:00 和 16:12 之间的范围内,在 16:00 范围内

结果应该是这样的:

ID  Name    StartDate               EndDate                   HourRangeTime
1 John 2017-01-29T16:00:00Z 2017-01-29T16:12:00Z 16:00
2 Mario 2017-01-29T16:17:00Z 2017-01-29T16:29:00Z 16:15
3 Kate 2017-01-15T10:35:00Z 2017-01-15T10:40:00Z 10:30
4 Maria 2017-01-15T10:17:00Z 2017-01-15T10:27:00Z 10:15
5 Oliver 2017-01-15T13:46:00Z 2017-01-29T14:00:00Z 13:45

如何填充 HourRangeTime 列,获取日期并查看它属于哪个范围?

最佳答案

您似乎专注于 StartDate

执行此操作的一种相对通用的方法是将其转换为分钟,然后将分钟截断为最接近的 15 分钟。这是代码:

select cast(dateadd(minute,
15 * (datediff(minute, 0,
cast(StartDate as time)
) / 15
), 0
) as time)

这会将结果作为 time 返回。

关于sql - 知道15分钟的日期间隔中的日期是SQL SERVER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46196735/

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