如果十进制符号后的数字不同,您知道如何在Oracle中转换NVARCHAR吗?
我需要这个,以便使用以下公式将其转换为日期:
select to_date('12/30/1899', 'MM/DD/YYYY') + 40676.2641666667
from dual;
问题在于第二部分(40676.2641666667)中的数字不同,因此我可以使用to_number(t.column,'99999D9999999999'),因为它不能以这种方式工作。
你有什么建议吗?
答案 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