Oracle 日期查询问题

zm03173225 2009-10-10 03:11:21
我有一张表有个字段名称是starttime 类型是DATE ,其中有一行的值是"11:00:00",我想把这一列选出来,语句如下:
select * from routebanci where starttime='11:00:00' and routename='***',可是总是说:ORA-01843: not a valid month,网上看了也改动了一下参数 NLS_DATE_LANGUAGE=AMERICAN 和 NLS_DATE_FORMAT=YYYY-MM-DD,可是还是不行
请教一下什么原因,我这里没有年月日的,只要一个时间就可以了,表原来是SQL建立的,是导过来的,不知道有什么好的解决办法
...全文
190 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼W 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zm03173225 的回复:]
哦 谢谢wildwave,那么这里面就不能存只有时分秒的时间吗,我发现从SQL转过来的都有1899-12-30,好像去不掉,能去掉吗?
[/Quote]
不能去掉,如果能去掉就不是date了
如果只有时间部分有用,查询的时候进行下例如to_char处理,像1楼写的那样
cosio 2009-10-12
  • 打赏
  • 举报
回复
--存分秒时间段:

select to_char(表的字段,'mi:ss') from table1;

--TEST

select to_char(sysdate,'mi:ss') from dual;

--RESULT:
33:28
zm03173225 2009-10-12
  • 打赏
  • 举报
回复
哦 谢谢wildwave,那么这里面就不能存只有时分秒的时间吗,我发现从SQL转过来的都有1899-12-30,好像去不掉,能去掉吗?
13abyKnight 2009-10-11
  • 打赏
  • 举报
回复
所查询的值和所初入的值类型一致。
blliy117 2009-10-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wildwave 的回复:]
...starttime你不是说了是date类型吗
'11:00:00'是字符串,当然不匹配了
select * from routebanci where to_char(starttime,'hh24:mi:ss')='11:00:00' and routename='***'
试试
[/Quote]

select * from routebanci where to_char(starttime,'hh24:mi:ss')='11:00:00' and routename='***'

oracle时间是比较严格的,to_char可以转换成字符串,to_date是可将字串转换成时间
小灰狼W 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zm03173225 的回复:]
能不能转化后面的时间来做
[/Quote]
可以啊,但是这样的话就要匹配到年月日,因为date格式包含了年月日时分秒
当没对年月日赋值时,年月日会被默认为当年本月的第一天
所以只将时间转换为日期格式,恐怕很难查到你想要的数据
看看select to_date('110000','hh24miss') from dual
zm03173225 2009-10-10
  • 打赏
  • 举报
回复
能不能转化后面的时间来做
xiaosheng2008 2009-10-10
  • 打赏
  • 举报
回复
卡西欧正确
zm03173225 2009-10-10
  • 打赏
  • 举报
回复
哦,这样的话可以了,谢谢.
能不能转化后面的,前面试了TO_DATE()好像不行,不知道应该怎么写,这样查询范围的话方便一点,这里应该可以使用between语句的吧,没有用过QRACLE 呵呵
cosio 2009-10-10
  • 打赏
  • 举报
回复
--给你示例子:
select to_char(sysdate,'hh24:mi:ss') from dual;
zhouxu_hust 2009-10-10
  • 打赏
  • 举报
回复
支持~
dawugui 2009-10-10
  • 打赏
  • 举报
回复
select * from routebanci where substr(to_char(starttime,'yyyy-mm-dd hh24:mi:ss'),11,8) = '11:00:00'
小灰狼W 2009-10-10
  • 打赏
  • 举报
回复
...starttime你不是说了是date类型吗
'11:00:00'是字符串,当然不匹配了
select * from routebanci where to_char(starttime,'hh24:mi:ss')='11:00:00' and routename='***'
试试

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧