2016-05-06 31 views
0

我需要帮助将日期格式从(05 May 2016 12:00 AM)更改为(YYYY-MM-DD HH:MM:SS)格式。要更改的日期格式

你能帮我解决吗?

非常感谢您的帮助。

我曾尝试以下格式

SELECT TO_CHAR(TO_DATE('2 Apr 2015 12:00 AM', 'DD-MON-YYYY '), 'YYYY-MM-DD') 
FROM dual; 

感谢您的帮助MTO。但我在sqlldr中使用相同的格式,然后得到低于错误。

ORA-01821的日期格式无法识别

LAST_UPDATE DATE 'TO_CHAR(TO_DATE(:LAST_UPDATE, 'DD MON YYYY HH12:MI AM'),'YYYY-MM-DD HH24:MI:SS')', 
+0

只要做到这一点。这有什么问题?这将是(2016-05-05 00:00:00)......这是什么问题? –

+0

_display_格式由显示值的应用程序控制。 “日期”值存储在没有任何格式的情况下。查看你的SQL客户端的手册,看看你怎么可以改变输出格式 –

+0

嗨,我已经尝试,但获取低于错误.. ORA-01830:日期格式图片结束之前转换整个输入字符串 – Sunitha

回答

1

如果你在SQL做这个*装载机和填充DATE列那么你希望你的初始字符串被转换为日期,而不是以另一种格式返回到另一个字符串。

如果使用SQL operator functionality,那么你只需要在内部to_date()一部分,而不是外to_char(),并注意经营者双引号括起来,而不是单引号:

LAST_UPDATE "TO_DATE(:LAST_UPDATE, 'DD MON YYYY HH12:MI AM')", 

但有更简单的处理为datetimes and intervals,你有点尝试使用DATE关键字;但是你提供的是SQL操作符而不是一个格式掩码。你可以这样做:

LAST_UPDATE DATE 'DD MON YYYY HH12:MI AM'. 

这是假设使用SQL * Loader是在英语NLS_LANG环境中运行,因为它依赖于NLS_DATE_LANGUAGE设置处理MON元素。如果不是这种情况,则可以使用SQL运算符方法,to_date()的可选第三个参数指定它期望字符串是英文的。


您的问题似乎被认为是Oracle将日期与特定格式存储混淆。它不是;它使用一般不需要知道的内部表示形式,并且由客户端以可读的格式显示内部值,这是使用显式或隐式转换。您似乎假设日期被“存储”为YYYY-MM-DD HH24:MI:SS,但这正是您的客户向您显示数据的方式。

2

使用全格式掩码:

SELECT TO_CHAR(
     TO_DATE('2 Apr 2015 12:00 AM', 'DD MON YYYY HH12:MI AM'), 
     'YYYY-MM-DD HH24:MI:SS' 
     ) 
FROM dual; 
+0

非常感谢您的帮助。 – Sunitha

+0

嗨除此之外,我在sqlldr中使用上面的格式,并得到error.ora-01821日期格式无法识别。 LAST_UPDATE DATE'TO_CHAR(TO_DATE(:LAST_UPDATE,'DD MON YYYY HH12:MI AM'),'YYYY-MM-DD HH24:MI:SS')' – Sunitha