SQL如何按时间段查询

现有一张表名为Record时间列名为Times类型是DATETIME2012-10-112:00:00现在想查询开始日期至结束日期内的周一至周五,早上八点半至中午十二点,... 现有一张表名为 Record 时间列名为 Times 类型是DATETIME 2012-10-1 12:00:00
现在想查询开始日期至结束日期内的 周一至周五,早上八点半至中午十二点,然后下午十二点半至晚上五点的记录,[ 个SQL语句应该怎么写哩,高手帮看看
比如我查询 2010-1-1 00:00:00 至 2011-1-1 00:00:00 日期内 所有周一至周五
,早上八点半至中午十二点,然后下午十二点半至晚上五点的记录,高手看看啊!
展开
 我来答
清心之时
2012-07-01 · 超过37用户采纳过TA的回答
知道答主
回答量:126
采纳率:0%
帮助的人:85.3万
展开全部
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 ,其他的就不用说了吧。
micro0369
推荐于2017-11-25 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4054万
展开全部
估计你这个是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'
)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhtzu
2012-07-01 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4223万
展开全部
时间函数各个数据库不完全相同,但思路是一样的,不要纠结时间段。
其实你上面的需求就是:
YEAR(RECORD)=2010
DAYOFWEEK BETWEEN 1 AND 5
这个样子,就是时间型字段拆分判断,根据不同数据库使用时间函数就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我爱刘海欣
2012-07-03
知道答主
回答量:4
采纳率:0%
帮助的人:5.7万
展开全部
用 between and
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式