如何在 oracle 中格式化日期和时间 [复制]

How to format date and time in oracle [duplicate]

提问人:Ann 提问时间:2/8/2022 更新时间:2/8/2022 访问量:374

问:

我在 oracle 中有一列具有不同日期和时间格式的date_timestamp,现在我在将它们转换为一种格式时遇到了问题。请问我该如何处理这个问题?我不确切知道该列中有多少种日期和时间格式,可能有这种格式: 'MM/DD/YYYY hh:mi:ss' AM 或此 'YYYY-MM-DD hh:mi:ss AM' 或此 'YYYY-MON-DD hh:mi:ss AM' 或更多。那是我的问题。该列的数据类型为 varchar。我必须将它放在另一列具有日期数据类型的列中。我使用了以下代码:

    UPDATE SCHOOL_BK        
    SET SCHOOL_TIMESTAMP = to_char(to_date(SCHOOL_TIMESTAMP,'MM/DD/YYYY hh:mi:ss AM'), 'YYYY-MM-DD hh:mi:ss AM')
    WHERE VALIDATEPAYMENTDATE(SCHOOL_TIMESTAMP) = 'Invalid';

这是 VALIDATESCHOOLDATE 函数代码:

    SELECT TO_DATE(SCHOOLDATE,'yyyy-MM-dd hh:mi:ss AM') INTO sDate FROM dual;
    RETURN 'Valid';
    EXCEPTION WHEN OTHERS THEN RETURN 'Invalid';

请帮帮我。

神谕

评论

1赞 OldProgrammer 2/8/2022
这就是您不将日期存储为字符串的原因。如果你不知道所有的排列,那么你如何测试它们呢?通过创建一个要验证的函数,您走在正确的道路上。也许在那里,有一个日期格式的集合,遍历它们并尝试转换,直到一个有效或全部失败。
1赞 EdStevens 2/8/2022
这只是为了突出将日期/时间存储在 DATE 或 TIMESTAMP 列以外的任何内容中是多么致命的缺陷。即使在“测试”几种可能的格式时,“01-02-03”的正确解释是什么?什么是一年,什么是月份,什么是日子?即使考虑到“04-05-2022”,那是 5 月 4 日还是 4 月 5 日?
1赞 Ann 2/8/2022
问题是我不是那个犯那个的人,我来这里是为了纠正这个错误。

答: 暂无答案