我需要帮助才能将日期格式从(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 :(得分: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;
答案 1 :(得分:1)
如果您在SQL * Loader中执行此操作并填充DATE
列,则需要将初始字符串转换为日期,而不是将其转换为另一种格式的其他字符串。
如果您使用SQL operator functionality,那么您只需要内部to_date()
部分,而不是外部to_char()
,并注意运算符用双引号括起来而不是单引号:< / p>
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,但这就是您的客户端向您显示数据的方式。