pl/sql 中查询时间段语句

小弟初学oracle,在pl/sql中执行如下查询语句,系统提示:关键字错误,请问是为什么,正确的语句该怎样写?Select*Frominv_comWhererqsjBe... 小弟初学oracle ,在pl/sql 中执行如下查询语句,系统提示:关键字错误,请问是为什么,正确的语句该怎样写?
Select * From inv_com
Where rqsj Between Timestamp
to_date('11/1/2007 00:00:00','mm/dd/yyyy hh24:mi:ss') And to_date('11/30/2007 23:59:59 hh24:mi:ss')
谢谢。
展开
 我来答
以画屏屏8748
2007-12-06 · TA获得超过7191个赞
知道大有可为答主
回答量:2581
采纳率:0%
帮助的人:3330万
展开全部
曾经遇到这样的情况,在数据库的Meeting表中有PublishTime (DateTime,8)字段,用来存储一个开会时间,在存入时由于要指明开会具体时间,故格式为yyyy-mm-dd hh:mm:ss,而我们查询时是通过yyyy-mm-dd来进行的,即查询某一天的所有会议信息,这样如果通过select * from Meeting where PublishTime=@PublishTime (参数@PublishTime为yyyy-mm-dd格式)语句进行查询将无法得到正确结果,比如我们要查询2004年12月1日的会议信息,在输入2004-12-01时就不能得到查询结果,而这种查询又不能要求输入具体的hh:mm:ss.

此时我们需要使用convert函数,它可以将一种数据类型的表达式转换为另一种数据类型的表达式.此处我们先将数据库内的datetime类型转换为char类型,由于输入的参数是10位的,所以写成

select * from Meeting where convert(varchar(10),PublishTime,121))=@PublishTime,这样在查询时数据库得到参数后先自动将数据库内的信息转换为yyyy-mm-dd格式的10位字符,只要与参数相同即可返回查询结果.而convert中的121是指将datetime类型转换为char类型时获得包括世纪位数的4位年份
_linzi_
推荐于2018-05-09 · 超过22用户采纳过TA的回答
知道答主
回答量:88
采纳率:100%
帮助的人:54.4万
展开全部
Select * From inv_com
Where to_date(rqsj,'mm/dd/yyyy hh24:mi:ss') Between
to_date('11/1/2007 00:00:00','mm/dd/yyyy hh24:mi:ss')
And to_date('11/30/2007 23:59:59 hh24:mi:ss')
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
璃团团7759
2007-12-06 · TA获得超过1645个赞
知道小有建树答主
回答量:679
采纳率:0%
帮助的人:222万
展开全部
Select rqsj From inv_com
Where Timestamp Between
to_date('11/1/2007 00:00:00','mm/dd/yyyy hh:mi:ss') And to_date('11/30/2007 23:59:59 hh:mi:ss');
顺序搞错了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式