Cast(to_number(to_char()))不返回第二个值

时间:2014-05-29 13:34:07

标签: sql plsql oracle-sqldeveloper

我正在尝试将时间戳转换为数字,但它无法返回第二个值。

查看日期2012/01/04 00:00:21我期待以下代码返回例如20100104000021。 相反,我得到20100104000000,最后21被转换为00.这发生在所有记录中,我不确定为什么。

        to_number(TO_CHAR(p_timestamp,'YYYYMMDDHH24MISS'))

有人可以提出建议吗?

编辑:我已经删除了CAST,但我仍然遇到同样的问题。

2 个答案:

答案 0 :(得分:0)

未正确使用CAST功能。您可以删除它,如下:

SELECT to_number(TO_CHAR(p_timestamp,'YYYYMMDDHH24MISS')) FROM YourTable;

答案 1 :(得分:0)

您应该使用To_Number功能:

select To_Number(To_Char(p_timestamp, 'YYYYMMDDHH24MISS'))
  from MyTable

cast到适当的数字:

-- change Number(20) to required type
select Cast(To_Char(p_timestamp, 'YYYYMMDDHH24MISS') as Number(20))
  from MyTable

P.S。 (附注):在Oracle中使用VarChar2代替VarChar

相关问题