Gipnomanul Asked:2020-03-05 20:32:18 +0000 UTC2020-03-05 20:32:18 +0000 UTC 2020-03-05 20:32:18 +0000 UTC 将具有给定长度的字符串转换为时间值 772 您需要将包含 4 位数字的字符串(例如,'0625')转换为“小时:分钟”格式的时间字符串(即'06:25'在本例中)。 该表具有内联列: TIME4位数字 TIME2把结果放在哪里 我尝试使用 function TO_DATE,但以下示例给出了错误的结果: UPDATE ATEST SET TIME2 = TO_DATE("TIME", 'HH24:MI') WHERE ID > 0 sql 2 个回答 Voted 0xdb 2020-03-10T21:17:11Z2020-03-10T21:17:11Z 要将字符串值转换为字符串值,您需要使用返回字符串值的函数。 尽管存在关键字time,但您不应使用与时间相关的函数,例如to_timestamp或to_date。有关将数据类型隐式转换为date字符串时可能出现的错误,请参见例如此处。 在匿名块中尝试转换结果更容易: declare time constant varchar2 (4) := '0625'; time2 varchar2 (24) := regexp_replace (time, '(\d{2})(\d{2})', '\1:\2'); begin dbms_output.put_line ('new time(old time)='||time2||'('||time||')'); end; 新时间(旧时间)=06:25(0625) Best Answer Yaroslav 2020-03-05T21:17:51Z2020-03-05T21:17:51Z 试试这样: ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'HH24:MI:SS'; UPDATE ATEST SET time2 = TO_TIMESTAMP(time, 'HH24MI') WHERE id > 0; 结果:
要将字符串值转换为字符串值,您需要使用返回字符串值的函数。
尽管存在关键字time,但您不应使用与时间相关的函数,例如
to_timestamp或to_date。有关将数据类型隐式转换为date字符串时可能出现的错误,请参见例如此处。在匿名块中尝试转换结果更容易:
试试这样:
结果: