2013-05-08 36 views
1

当我们键入Excel单元格中当前日期为08月 - 2013 右键单击该单元格,并在格式当我点击数为类别,我得到了一些日期为SQL数

Date-08-May-13 
    Formatted one-41402.00 

所以无论如何,我可以得到相同的数字在sql

我试过用这个。

select to_char(sysdate,'J') from dual 

但产量2456421

我明白,这是一个朱利安值

但任何人都可以帮助我得到的输出作为我在Excel中即获得; 41402

回答

5

Windows版本的Excel将日期存储为序列号。 1900年1月1日是1,02年1月2日是2等。Mac版本用于使用不同的开始日期;我不知道这是否仍然如此。

你需要的基本数据是简单的日期算术。

select current_date, current_date - date '1900-01-01' 
from dual; 

对于我当前的连接返回41400.67037037037。四舍五入并添加1用于fenceposting将返回您正在寻找的号码,但我想要在多次时区测试,并在此之前我发誓。

5

Excel中的日期存储为序列号,01-JAN-1900为1. Citation

我们可以在甲骨文日期算术,所以转换从Oracle的Excel日期将是:

trunc(sysdate) - to_date('1900-01-01', 'yyyy-mm-dd') 

我测试过这一点,僵硬它产生41401 - 因为它是从午夜去。因此,显然微软正在使用天花板函数将其提高到下一个整数:

ceil (sysdate - to_date('1900-01-01', 'yyyy-mm-dd'))