要更改的日期格式

Date format to change

我需要帮助将日期格式从 (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 date format not recognized

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

使用完整格式掩码:

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;

如果您在 SQL*Loader 中执行此操作并填充 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 以特定格式存储日期。它不是;它使用您通常不需要知道的内部表示,并且由您的客户以可读格式显示该内部值,这是使用显式或隐式转换。您似乎假设日期 'stored' 为 YYYY-MM-DD HH24:MI:SS,但这正是您的客户向您显示数据的方式。