【问题标题】:Oracle to_date with p.m./a.mOracle to_date 与 p.m./a.m
【发布时间】:2014-12-03 10:56:36
【问题描述】:

我需要在 oracle 中将字符串转换为日期。

字符串的格式是这样的:

'08/11/1999 05:45:00 p.m.'

但最后一个位置可以改变 p.m 或 a.m。 我试着做一些类似的事情:

to_date('08/11/1999 05:45:00 p.m.', 'dd/mm/yyyy hh:mi:ss a.m./p.m.')

to_date('08/11/1999 05:45:00 p.m.', 'dd/mm/yyyy hh:mi:ss am/pm')

但返回错误 ORA-01855 : AM/A.M.或下午/下午需要...有什么想法吗?

【问题讨论】:

    标签: oracle to-date


    【解决方案1】:

    试试这个:

    to_date
      ( '08/11/1999 05:45:00 p.m.'
      , 'dd/mm/yyyy hh:mi:ss a.m.'
      , 'nls_date_language=american'
      )
    

    似乎是“上午”和“下午”而不是 "am" 和 "pm" 需要将 nls_date_language 设置为 "american"。

    【讨论】:

      【解决方案2】:

      要转换ampm 的时间,只需给a.m. 如下所示

      to_date(UPPER('08/11/1999 05:45:00 p.m.'),'dd/mm/yyyy hh:mi:ss a.m.')
      

      希望这可能会有所帮助。请参考https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions183.htm

      【讨论】:

      • 这个解决方案不起作用这给我一个错误 ORA-01855 : AM/A.M.或下午/下午必填
      【解决方案3】:

      我试过这个案例。这是正确的答案: TO_DATE('3/9/2022 9:35:00 PM', 'MM/DD/YYYY hh:mi:ss am', 'nls_date_language=american')

      【讨论】:

        猜你喜欢
        • 2011-12-14
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-11
        相关资源
        最近更新 更多