SQL 判断时间 懂的进!十万火....急!!!!

来源:百度知道 编辑:UC知道 时间:2024/09/24 22:08:46
clinic_classOrder 是排班表
7:50 - 11:30 上午班
11:30 - 14:30 中午班
14.30 - 17:50 下午班
17:50 - 7:30 晚班 (问题在这里)

SQL:
SELECT beginTime, classOrderId, classOrderName, endTime FROM clinic_classOrder
WHERE
(CONVERT (varchar(20), GETDATE(), 108) >= CONVERT (varchar(20), beginTime, 108))
AND
(CONVERT (varchar(20), GETDATE(), 108) <= CONVERT (varchar(20), endTime, 108))

取系统当前时间是什么班...
上午班,中,下午班 都能取出
晚班取不了 因为晚班延长到第二天的早上 应该怎么判断?
帮忙解决下!!!!!! 回答快的加分!
一楼的行不通,
二楼要怎么做?不是字符 是datetime
三楼的说的是好 不妨写出来 看看
四楼 行不通
clinic_classOrder 是排班表

beginTime ----- endTime
7:50 ------------- 11:30 上午班
11:30 ------------- 14:30 中午班
14.30 ------------- 17:50 下午班
17:50 ------------- 7:30 晚班 (问题在这里)

很简单!(只是在您的语句上加后面两个条件):

SELECT beginTime, classOrderId, classOrderName, endTime FROM clinic_classOrder
WHERE
(CONVERT (varchar(20), GETDATE(), 108) >= CONVERT (varchar(20), beginTime, 108))
AND
(CONVERT (varchar(20), GETDATE(), 108) <= CONVERT (varchar(20), endTime, 108))
OR
(CONVERT (varchar(20), GETDATE(), 108) >= CONVERT (varchar(20), beginTime, 108)) AND ENDTIME<BEGINTIME
OR
(CONVERT (varchar(20), GETDATE(), 108) <= CONVERT (varchar(20), endTime, 108)) AND ENDTIME<BEGINTIME
========================

--请注意,前题是年、月、日要全部相同(比如全都是1900-01-01),如果不同,就要替换
AND ENDTIME<BEGINTIME 为
(CONVERT (varchar(20), ENDTIME, 108) < CONVERT (varchar(20), BEGINTime, 108))
也一样。
============
这么经典的回答,多加些分吧!

endtime是什么类型?如果是字符,建议把晚班的结束时间加24小时:
7:50 - 11:30 上午班
11:30 - 14:30 中午班
14.30 - 17:50 下午班
17:50 - 31:30 晚班(7+24=31)

datetime类型的就不会只有时间了,加上