4

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

4

2 回答 2

11

转换为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

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

于 2013-08-10T10:58:12.767 回答
0

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

于 2017-02-02T22:59:55.013 回答