隐藏NVARCHAR到数字(小数点后的数字变化)

时间:2017-11-09 15:14:42

标签: sql oracle decimal

如果十进制符号后的数字不同,您知道如何在Oracle中转换NVARCHAR吗?

我需要这个,以便使用以下公式将其转换为日期:

select to_date('12/30/1899', 'MM/DD/YYYY') + 40676.2641666667
from dual;

问题在于第二部分(40676.2641666667)中的数字不同,因此我可以使用to_number(t.column,'99999D9999999999'),因为它不能以这种方式工作。

你有什么建议吗?

2 个答案:

答案 0 :(得分:0)

这些对我有用:

select (date '1899-12-30') + '40676.2641666667'
from dual

select (date '1899-12-30') + cast('40676.2641666667' as number)
from dual

select (date '1899-12-30') + 40676.2641666667
from dual

有一点需要注意,国际化设置可能需要使用逗号而不是句号。

答案 1 :(得分:0)

Oracle没有NVARCHAR,它有NVARCHAR2。以下适用于我:

DECLARE
    nv_Number       NVARCHAR2(0032) := 40676.2641666667;
    dt_Base     DATE           := TO_DATE('12/30/1899', 'MM/DD/YYYY');
    dt_Result       DATE;
BEGIN
    dt_Result := dt_Base + TO_NUMBER(nv_Number);
    DBMS_OUTPUT.PUT_LINE(TO_CHAR(dt_Result,'yyyymmdd hh24:mi:ss'));
END;

结果:20110513 06:20:24