我有时间将 HH:MI:SS AM/PM 存储在表的 varchar2 列中。如何将其转换为 24 小时格式?
问问题
52554 次
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 回答