作者:提着变形金刚的Oceannk_737 | 来源:互联网 | 2023-09-18 13:23
有一个字段为Vchar型,代表日期,但是并不知道具体日期格式(可能是'YYYY-MM-DD' 或者是'DD-MON-YYYY'等等),如何将它转换成Date型??
9 个解决方案
如果字段为'2003-01-01'
这么写是没错.
但如果是'1-jan-2003'
这么写肯定出错
如果是系统业务需要输入日期的,最好将日期格式设置成统一的"yyyy-mm-dd"或"yyyy/mm/dd"等。
一般如果数据库中保存的字段是date型的,转换就比较方便,只需改变字段的显示方式既可。
如果是要将String类型或者其他类型的字段转换成date的,最好先将其格式调整为"xxxx-xx-xx",然后用to_date(),象'1-jan-2003'就比较难办了!
to_date('2001-01-01','YYYY-MM-DD')
或者
to_date('01-01-2001','DD-MON-YYYY')
to_Date('2003-01-01 16:20','yyyy-mm-dd hh24:mi')
to_Date('1-jan-2003 16:22','dd-mon-yyyy hh24:mi')
如果没有办法确定输入格式的话,最好写一个function去判断输入格式,并使用相应的to_date()函数格式
一般的使用 TO_DATE('2003-03-10 12:11:12','YYYY-MM-DD HH24:MI:SS')
对于象'1-jan-2003'可以转化系统日期格式
select * from nls_session_parameters
check NLS_DATE_FORMAT , 假设它是 DD-MON-RR
insert into t1 values ( '01-JAN-03' );
commit;