在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:00到05:30'
WHEN (DATEPART(HOUR, start_date) BETWEEN 12 AND 13.5) OR (DATEPART(HOUR, end_date) BETWEEN 12 AND 13.5) THEN '12:00到13:30'
WHEN (DATEPART(HOUR, start_date) BETWEEN 17 AND 17.5) OR (DATEPART(HOUR, end_date) BETWEEN 17 AND 17.5) THEN '17:00到17:30'
WHEN (DATEPART(HOUR, start_date) BETWEEN 23 AND 23.5) OR (DATEPART(HOUR, end_date) BETWEEN 23 AND 23.5) THEN '23:00到23: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
函数转换后的时间部分。
这样就可以判断开始日期到结束日期是否在自定义范围内,并返回相应的范围信息。如果不在自定义范围内,则返回不在自定义范围内
。
【相关推荐】