01830。00000-“日期格式图片在转换整个输入字符串之前结束”

时间:2018-09-27 20:59:44

标签: sql oracle oracle11g

select to_date('13/03/17 05:43:29,000000000 PM -05:00DD/MM/YY HH24:MI:SS') from 
irregularities;

如何将此日期转换为24小时格式?

1 个答案:

答案 0 :(得分:0)

您可以使用以下命令将字符串转换为带有时区的时间戳:

select to_timestamp_tz('13/03/17 05:43:29,000000000 PM -05:00',
  'DD/MM/RR HH:MI:SS,FF9 AM TZH:TZM')
from dual;

如果只需要日期数据类型,则可以强制转换:

select cast(
  to_timestamp_tz('13/03/17 05:43:29,000000000 PM -05:00',
    'DD/MM/RR HH:MI:SS,FF9 AM TZH:TZM')
  as date)
from dual;

如果您真的只想要字符串版本,则可以将其转换回去,通常只用于显示:

select to_date(
  to_timestamp_tz('13/03/17 05:43:29,000000000 PM -05:00',
    'DD/MM/RR HH:MI:SS,FF9 AM TZH:TZM'),
  'DD/MM/YYYY HH24:MI:SS')
from dual;

如果原始字符串来自表,则只需将文本文字替换为列名,并将dual替换为表名。当然,这假定该列实际上是一个字符串。如果它实际上已经是一个时间戳,并且您的客户端只是以您不喜欢的方式显示它,则只需要to_char()部分。

在文档中详细了解以下内容:to_timestamp_tzformat modelscast()to_char()