oracle的pl/sql问题

weiweipxb 2012-02-14 02:53:33
我有一个栏位为test_date为date类型,写sql的where条件时为什么要to_date(test_date) = TO_DATE('12/02/2012','dd/MM/yyyy')这样才有值,test_date = TO_DATE('12/02/2012','dd/MM/yyyy')就没有值。test_date 就是date类型,为什么还要用to_date()
...全文
114 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlb_chen 2012-02-15
  • 打赏
  • 举报
回复
select test_date from yourtbl;
可知,你这个结果如果是 '2011-12-05 23:25:25’ 这样的,那么不加 to_date,是查不到数据的。
因为:'2011-12-05 23:25:25’ <> '2011-12-05'
如加了to_date ,则两者结构形式一样,值自然就能查出来。
greency 2012-02-15
  • 打赏
  • 举报
回复
oracle 默认Date类型的 日期格式是 dd/MM/yyyy
test_date 即结果数据的格式为 yyyy-MM-dd HH24:mi:ss

--- 所以如果想要得出结果有两种方式:
1.test_date = to_date('2012-02-12','yyyy-MM-dd');
2.to_date(test_date) = to_date('12/02/2012','dd/MM/yyyy');
weiweipxb 2012-02-15
  • 打赏
  • 举报
回复
搞了几年,都是打酱油。
xpingping 2012-02-14
  • 打赏
  • 举报
回复
额……
select test_date from table
显示的是YYYY/MM/DD hh24:mi:ss形式的吧……
weiweipxb 2012-02-14
  • 打赏
  • 举报
回复
to_date後面沒有時間。
渭水飞熊 2012-02-14
  • 打赏
  • 举报
回复
这个问题的应该就是to_date这个函数的默认格式的问题,你可以做以下的实验:
执行该语句,你会发现两列的结果是不一样的。
select to_date(test_date),test_date from table_name;
我个人觉得是oracle的to_date函数默认格式的原因,时间原因没有多分析,你可以研究下,给大家公布下一个结果,呵呵呵。
TorresDrogba 2012-02-14
  • 打赏
  • 举报
回复
你后面的to_date时间取整了,你字段里面存的实际值是什么样的 也是和where条件后面一样吗
weiweipxb 2012-02-14
  • 打赏
  • 举报
回复
问题已经说的很清楚了。
weiweipxb 2012-02-14
  • 打赏
  • 举报
回复
你试试就知道报不报错。
ICE-word 2012-02-14
  • 打赏
  • 举报
回复
你不用to_date 直接where test_date有值吗?
TorresDrogba 2012-02-14
  • 打赏
  • 举报
回复
怎么可能 时间类型 再to_date()会报错的

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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