日期作为sql中的数字

时间:2013-05-08 15:55:06

标签: oracle plsql oracle11g oracle10g date-arithmetic

在Excel单元格中输入当前日期为2013年5月8日 右键单击单元格,当我点击数字作为类别时,我会得到一个数字

    Date-08-May-13
    Formatted one-41402.00

无论如何,我可以在sql

中获得相同的数字

我尝试过使用它。

    select to_char(sysdate,'J') from dual

但输出是2456421

我知道这是朱利安值

但是,任何人都可以帮助我获得输出,因为我正在使用excel,即; 41402

2 个答案:

答案 0 :(得分:5)

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

我们可以在Oracle中使用日期进行算术运算,因此从Oracle转换为Excel日期将是:

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

我已经测试了这个并且真实地产生了41401 - 因为它是从午夜开始的。显然,微软正在使用天花板功能将其提升到下一个整数:

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

答案 1 :(得分:5)

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

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

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

为我当前的连接返回41400.67037037037。对于fenceposting进行舍入并添加1将返回您正在寻找的数字,但是我想在我发誓之前用多个时区进行测试。