在oracle中格式化DATE

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

我想创build一个函数,获取这个date检查它不为null,然后将其更改为yyyy / mm / dd格式

但问题是,甲骨文不接受dd-MMM-yy合成date作为input参数,它说:请使用yyyy-MM-dddate格式!

我怎么能先把dd-MMM-yy formate换成yyyy-MM-dd,所以oracle接受它作为input,然后把它改成yyyy / mm / dd

:请使用yyyy-MM-dddate格式!

这与Oracle错误无关。

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

不,你感到困惑。 Oracle不会按照您看到的格式存储date。 它将内部存储在7个字节中 ,每个字节存储不同的date时间值。

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 

如果要显示,请使用适当的FORMAT MODEL的 TO_CHAR

在插入时,使用适当的FORMAT MODEL的 TO_DATE

默认情况下,您看到的格式是特定于语言环境的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格式。

如果您的月份名称最多为三个字符,则使用MMM,然后使用MON