sql sever时间范围问题

在sql sever中有一个开始日期,一个结束日期,格式为:2023-09-12 00:12:02.0000000;还有一个自定义的时间范围,05:00到05:30;12:00到13:30;17:00到17:30;23:00到23:30;请问如何判断开始日期到结束日期是否在自定义的范围内,如果在的话,是在哪个范围内呢,并且如果在时间范围内,显示是开始时间在范围内还是结束时间在范围内,或者两者都在

看一下这个,记得采纳哦
以通过SQL Server中的日期和时间函数来解决


SELECT   
    CASE   
        WHEN (DATEPART(HOUR, start_date) BETWEEN 5 AND 5.5) OR (DATEPART(HOUR, end_date) BETWEEN 5 AND 5.5) THEN '05:0005:30'  
        WHEN (DATEPART(HOUR, start_date) BETWEEN 12 AND 13.5) OR (DATEPART(HOUR, end_date) BETWEEN 12 AND 13.5) THEN '12:0013:30'  
        WHEN (DATEPART(HOUR, start_date) BETWEEN 17 AND 17.5) OR (DATEPART(HOUR, end_date) BETWEEN 17 AND 17.5) THEN '17:0017:30'  
        WHEN (DATEPART(HOUR, start_date) BETWEEN 23 AND 23.5) OR (DATEPART(HOUR, end_date) BETWEEN 23 AND 23.5) THEN '23:0023:30'  
        ELSE '不在自定义范围内'  
    END AS time_range  
FROM your_table

【以下回答由 GPT 生成】

答案:

要判断开始日期到结束日期是否在自定义的范围内,可以使用SQL Server的日期函数和条件语句来实现。

首先,将开始日期和结束日期格式化为时间部分,即去掉日期部分,只保留时间。可以使用CONVERT函数将日期转换为时间部分。

然后,可以使用CASE语句来判断时间范围:

SELECT
    CASE 
        WHEN converted_start_time BETWEEN '05:00' AND '05:30' THEN '在05:00到05:30范围内'
        WHEN converted_start_time BETWEEN '12:00' AND '13:30' THEN '在12:00到13:30范围内'
        WHEN converted_start_time BETWEEN '17:00' AND '17:30' THEN '在17:00到17:30范围内'
        WHEN converted_start_time BETWEEN '23:00' AND '23:30' THEN '在23:00到23:30范围内'
        ELSE '不在自定义范围内'
    END AS time_range
FROM
    your_table

其中,converted_start_time是开始日期经过CONVERT函数转换后的时间部分。

这样就可以判断开始日期到结束日期是否在自定义范围内,并返回相应的范围信息。如果不在自定义范围内,则返回不在自定义范围内



【相关推荐】



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