oracle日期转换问题
数据库中的日期格式为:yyyy.MM.dd我用to_date(t.time,'yyyy-MM-dd')转换报错...
数据库中的日期格式为:yyyy.MM.dd 我用to_date(t.time,'yyyy-MM-dd')转换报错
展开
展开全部
首先你要搞清楚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>
举个例子,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>
展开全部
想转换成日期型时候先进行判断,如下所示
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;
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;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据库字段如果是date类型吗
t.time是什么类型
如果t.time是date
那就不能直接用to_date
只有to_char之后再to_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是系统日期,你可换成表中的字段
select to_char(sysdate,'mm/dd/yy') from dual
其中sysdate是系统日期,你可换成表中的字段
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将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方法也是我想用的 忘了用法了囧 。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询