oracle日期转换问题

数据库中的日期格式为:yyyy.MM.dd我用to_date(t.time,'yyyy-MM-dd')转换报错... 数据库中的日期格式为:yyyy.MM.dd 我用to_date(t.time,'yyyy-MM-dd')转换报错 展开
 我来答
百度网友9f70a8c
2011-04-01 · TA获得超过1179个赞
知道小有建树答主
回答量:574
采纳率:100%
帮助的人:635万
展开全部
首先你要搞清楚to_date(a,b)函数的用法跟参数的含义,就是把b格式的字符串a转换成date类型,所以要求b的格式要跟a的实际格式一样
举个例子,t.time存的是'2011.11.11',那后面的格式也要是'yyyy.mm.dd'才行
SQL> desc test
Name Type Nullable Default Comments
---- ---- -------- ------- --------
T DATE Y

SQL> insert into test(t) select to_date('20111111','yyyymmdd') from dual;

1 row inserted

SQL> insert into test(t) select to_date('2011-11-11','yyyy-mm-dd') from dual;

1 row inserted

SQL> insert into test(t) select to_date('2011.11.11','yyyy.mm.dd') from dual;

1 row inserted

SQL> insert into test(t) select to_date('2011.11','yyyy.mm') from dual;

1 row inserted

SQL>
wangcy3173
2011-04-01 · TA获得超过131个赞
知道答主
回答量:166
采纳率:0%
帮助的人:144万
展开全部
想转换成日期型时候先进行判断,如下所示
with wcy_t1 as(
select '1999.02' f1 from dual
union all
select '1998.03.20' from dual
)
select
case length(f1)
when 7 then to_date(f1,'yyyy.mm')
when 10 then to_date(f1,'yyyy.mm.dd')
end
from wcy_t1;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ayanami365
2011-04-01 · TA获得超过937个赞
知道小有建树答主
回答量:1777
采纳率:0%
帮助的人:728万
展开全部
数据库字段如果是date类型吗

t.time是什么类型

如果t.time是date

那就不能直接用to_date

只有to_char之后再to_date

- - ~ 呵呵
追问
是string型的 我的数据库中的日期有的是yyyy.MM.dd 有的是yyyy.MM  所以转换时会报错
追答
额。。。。 
直接select to_date(t.time,'yyyy-MM-dd') from dual
看看报错不
这个报错就是转换的问题
如果不报错就是你要存的字段设了约束或者默认值
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-01
展开全部
如果只是要显示的话

select to_char(sysdate,'mm/dd/yy') from dual

其中sysdate是系统日期,你可换成表中的字段
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c51bacc7d
2011-04-01 · 超过35用户采纳过TA的回答
知道答主
回答量:184
采纳率:0%
帮助的人:113万
展开全部
将t.time 全部转换成 'yyyy-MM-dd' 就可以了
追问
select to_date('2011.01','yyyy-MM-dd') from return_poundage t这样的不行 只能select to_date('2011.01.11','yyyy-MM-dd') from return_poundage t但是数据库中有yyyy-MM也有yyyy-MM-dd所有有的会报错
追答
强烈建议把 yyyy-MM 的 改成 yyyy-MM-dd 我试了下 不改不好弄啊!!!

如果只是要显示的话

select to_char(sysdate,'mm/dd/yy') from dual

其中sysdate是系统日期,你可换成表中的字段 回答者: 程序员网校 网友 | 2011-4-1 13:25
想转换成日期型时候先进行判断,如下所示
with wcy_t1 as(
select '1999.02' f1 from dual
union all
select '1998.03.20' from dual
)
select
case length(f1)
when 7 then to_date(f1,'yyyy.mm')
when 10 then to_date(f1,'yyyy.mm.dd')
end
from wcy_t1;

这个哥们的方法是正解 。。。 case方法也是我想用的 忘了用法了囧 。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式