在oracle中格式化DATE

时间:2015-02-03 12:21:49

标签: oracle date date-formatting

我在表格中有一个日期字段,其中包含dd-MMM-yy格式的日期。

我想创建一个函数,让这个日期检查它不为null,然后将其更改为yyyy / mm / dd格式

但问题是oracle不接受dd-MMM-yy formate date作为输入参数和 它说:请使用yyyy-MM-dd日期格式!!!

我怎样才能首先将dd-MMM-yy格式转换为yyyy-MM-dd,以便oracle接受它作为输入然后将其更改为yyyy / mm / dd

1 个答案:

答案 0 :(得分:10)

  

:请使用yyyy-MM-dd日期格式!!!

这与Oracle错误无关。

  

我在表格中有一个日期字段,其中包含dd-MMM-yy格式的日期。

不,你很困惑。 Oracle不会以您看到的格式存储日期。它在内部存储 7字节,每个字节存储 datetime 值的不同组件。

Byte    Description
----    -------------------------------------------------
1       Century value but before storing it add 100 to it
2       Year and 100 is added to it before storing
3       Month
4       Day of the month
5       Hours but add 1 before storing it
6       Minutes but add 1 before storing it
7       Seconds but add 1 before storing it

如果您想要显示,请使用 TO_CHAR 和正确的 FORMAT MODEL

插入时,使用 TO_DATE 和正确的 FORMAT MODEL

默认情况下,您看到的格式是特定于区域设置的NLS设置

SQL> select parameter, value from v$nls_parameters where parameter='NLS_DATE_FORMAT';

PARAMETER       VALUE
--------------- ----------------------------------------------------------------
NLS_DATE_FORMAT DD-MON-RR

SQL> select sysdate from dual;

SYSDATE
---------
03-FEB-15

SQL> select to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'MM
-------------------
02/03/2015 17:59:42

SQL>

更新关于 MMM 格式。

如果您指的是月份名称最多三个字符,请使用 MON