【问题标题】:How to convert time stored in varchar2 to 24-hour format in Oracle?如何将存储在 varchar2 中的时间转换为 Oracle 中的 24 小时格式?
【发布时间】:2013-08-10 10:36:48
【问题描述】:

我有时间将 HH:MI:SS AM/PM 存储在表的 varchar2 列中。如何将其转换为 24 小时格式?

【问题讨论】:

  • 说真的,如果你在 varchar2 中有一个日期,是不是应该将它存储在 datetime2 列中?
  • 我的手。我没有访问权限。我比你更恼火,但这是我必须解决的问题。

标签: sql oracle datetime time oracle-sqldeveloper


【解决方案1】:

要转换为DATE

to_date(<text field>, 'DD/MM/YYYY HH:MI:SS AM')

要转换成另一个字符串:

to_char(to_date(<date field>, 'DD/MM/YYYY HH:MI:SS AM'), 'DD/MM/YYYY HH24:MI:SS')

例如(NLS_DATE_FORMAT 设置为 YYYY-MM-DD HH24:MI:SS):

select to_date('09/08/2013 5:13:07 PM', 'DD/MM/YYYY HH:MI:SS AM'),
  to_char(to_date('09/08/2013 5:13:07 PM', 'DD/MM/YYYY HH:MI:SS AM'),
    'DD/MM/YYYY HH24:MI:SS')
from dual;

TO_DATE('09/08/2013 TO_CHAR(TO_DATE('09
------------------- -------------------
2013-08-09 17:13:07 09/08/2013 17:13:07

如果你只有有时间部分:

select to_date('5:13:07 PM', 'HH:MI:SS AM'),
  to_char(to_date('5:13:07 PM', 'HH:MI:SS AM'), 'HH24:MI:SS')
from dual;

TO_DATE('5:13:07PM' TO_CHAR(
------------------- --------
2013-08-01 17:13:07 17:13:07

请注意,如果您不提供值的日期部分,则默认为当月的第一天(在the documentation for datetime literals 中提到;但如果您只有时间,您可能希望将其保留为字符串无论如何。

【讨论】:

    【解决方案2】:

    使用这个:2013-08-01 17:13:07 17:13:07 请注意,如果您不提供值的日期部分,则默认为当月的第一天(在日期时间文字的文档中提到),但如果您只有时间,您可能希望将其保留为字符串无论如何。

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 2018-06-05
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 2021-06-16
      • 1970-01-01
      相关资源
      最近更新 更多