Oracle 将时间戳值转换为数字

Oracle 将时间戳值转换为数字,oracle,datetime,type-conversion,Oracle,Datetime,Type Conversion,我有一个格式为2005-01-31T00:00:00.000-05:00的时间戳值。我希望将其转换为格式为20050131的数字,将其等同于数据类型为number的列 我试着用to_numberto_datetimestamp“yyyymmdd”来完成。但这会导致错误,而不是一个有效的月份 你能帮我解决这个问题吗。试试下面的方法 to_number(to_char(timestamp, 'yyyymmdd')) 首先必须转换为字符,然后再转换为数字。如果时间戳值是VARCHAR2值,这可能会有

我有一个格式为2005-01-31T00:00:00.000-05:00的时间戳值。我希望将其转换为格式为20050131的数字,将其等同于数据类型为number的列

我试着用to_numberto_datetimestamp“yyyymmdd”来完成。但这会导致错误,而不是一个有效的月份

你能帮我解决这个问题吗。

试试下面的方法

to_number(to_char(timestamp, 'yyyymmdd'))

首先必须转换为字符,然后再转换为数字。

如果时间戳值是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;

首先将其转换为string@AllanS.Hansen如前所述,选择dual中的“yyyyymmdd”作为VARCHAR230的“2005-01-31T00:00:00.000-05:00”日期广播“2005-01-31T00:00.000-05:00”?例如:2005-01-31作为YYYY-MM dd没有任何规则,我希望它采用数字格式,以将它等同于另一列当我按照您提到的那样做时,我得到的错误不是一个有效的数字@depusteddoes to_char给出的值。请检查小提琴,它可以与systimestamp一起工作。我认为您的时间戳格式有错误。告诉我这是表中的varchar还是timestamp这是时间戳,不是varcharit不是VARCHAR2。这是一个时间戳