oracle日期转换问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle日期转换问题相关的知识,希望对你有一定的参考价值。

数据库中的日期格式为: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>
参考技术A 想转换成日期型时候先进行判断,如下所示
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;本回答被提问者采纳
参考技术B 数据库字段如果是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
看看报错不
这个报错就是转换的问题
如果不报错就是你要存的字段设了约束或者默认值

参考技术C 如果只是要显示的话

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

其中sysdate是系统日期,你可换成表中的字段
参考技术D 将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方法也是我想用的 忘了用法了囧 。。。

在 oracle 中从日期格式转换为日期格式

【中文标题】在 oracle 中从日期格式转换为日期格式【英文标题】:Converting from Date format to date format in oracle 【发布时间】:2020-06-26 11:53:18 【问题描述】:

我在 oracle SQL 中有一个类似 **23-APR-20** 格式的日期,我想以日期格式将其设为 23-04-2020 也不是字符串,请问我该如何处理?

【问题讨论】:

提示:to_date()/to_char()。发帖前你真的搜索过什么吗? 【参考方案1】:

请使用下面的类型转换,

 select to_date(to_char(date_column, 'DD-MON-YY'), 'DD-MM-YYYY') from table_name;

【讨论】:

它给了我同样的结果 01-APR-20【参考方案2】:

这是你 NLS_DATE_FORMAT 工作的地方。

试试这个:

ALTER SESSION SET NLS_DATE_FORMAT='DD-MM-YYYY';

那么您所有的日期都将采用 dd-mm-yyyy 格式。

请注意,oracle 不会以任何格式存储日期。它将其存储在自己的二进制结构中。 NLS 设置只是使格式对您的客户可见。

【讨论】:

这会使 NLS_DATE_FORMAT 气质或仅用于本次会议的临时性吗? 是的,它只会改变会话的 NLS 参数。但是您也可以在数据库级别设置它。您需要阅读有关设置 NLS 参数的更多信息

以上是关于oracle日期转换问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle 字符型中文日期怎么转换成日期型

oracle日期转换函数怎么调优

oracle日期转换

oracle怎么把数值型日期转换成日期字符型

oracle SQL语句,日期格式转换

oracle日期转换