将时间戳值转换为数字

时间:2014-12-11 06:48:18

标签: oracle datetime type-conversion

我的格式为2005-01-31T00:00:00.000-05:00的时间戳值。我想将它转换为格式为20050131的数字,以将其等同于数据类型为数字的列。

我试图通过to_number(to_date(timestamp, 'yyyymmdd'))来做到这一点。但它导致错误not a valid month

请你帮我解决一下。

2 个答案:

答案 0 :(得分:0)

尝试使用如下

to_number(to_char(timestamp, 'yyyymmdd'))

首先你必须转换为char然后转换为数字。

答案 1 :(得分:0)

如果您的时间戳值为VARCHAR2,则可能会有所帮助:

WITH tstmp AS (
  SELECT '2005-01-31T00:00:00.000-05:00' AS val FROM dual
)
SELECT TO_NUMBER(TO_CHAR(FROM_TZ(TO_TIMESTAMP(SUBSTR(val, 1, 23), 'YYYY-MM-DD"T"HH24:MI:SS.FF3'), SUBSTR(val, 24)) , 'YYYYMMDD')) AS newval
  FROM tstmp;