SQL如何按时间段查询

现有一张表名为 Record 时间列名为 Times 类型是DATETIME 2012-10-1 12:00:00
现在想查询开始日期至结束日期内的 周一至周五,早上八点半至中午十二点,然后下午十二点半至晚上五点的记录,[ 个SQL语句应该怎么写哩,高手帮看看
比如我查询 2010-1-1 00:00:00 至 2011-1-1 00:00:00 日期内 所有周一至周五
,早上八点半至中午十二点,然后下午十二点半至晚上五点的记录,高手看看啊!

SELECT * FROM Record WHERE
TO_CHAR(Times,'YYYY/MM/DD') BETWEEN '2010/01/01' and '2010/12/31'
AND TO_CHAR(Times,'D') BETWEEN 2 AND 6
AND (TO_CHAR(Times,'HH24:Mi:SS') BETWEEN '08:30:00' and '12:00:00' or TO_CHAR(Times,'HH24:Mi:SS') BETWEEN '12:30:00' and '17:00:00')
'D' 是获取星期,从星期日 开始 是1 ,其他的就不用说了吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
估计你这个是sqlserver,我给你写一下:

SELECT * FROM Record
WHERE
convert(varchar(10),Times,120) BETWEEN '2010-01-01' and '2010-12-31'
AND DatePart('w',Times) BETWEEN 2 AND 6
AND (
CONVERT(varchar(8), Times, 8) BETWEEN '08:30:00' and '12:00:00'
or
CONVERT(varchar(8), Times, 8) BETWEEN '12:30:00' and '17:00:00'
)本回答被提问者和网友采纳
第2个回答  2012-07-01
时间函数各个数据库不完全相同,但思路是一样的,不要纠结时间段。
其实你上面的需求就是:
YEAR(RECORD)=2010
DAYOFWEEK BETWEEN 1 AND 5
这个样子,就是时间型字段拆分判断,根据不同数据库使用时间函数就可以了。
第3个回答  2012-07-03
用 between and
相似回答