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
看看报错不
这个报错就是转换的问题
如果不报错就是你要存的字段设了约束或者默认值
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日期转换问题的主要内容,如果未能解决你的问题,请参考以下文章