日期作为sql中的数字

use*_*017 1 oracle plsql oracle10g date-arithmetic oracle11g

当我们在Excel单元格中键入当前日期为08-May-2013时右键单击单元格,当我单击数字作为类别时,我会得到一个数字

    Date-08-May-13
    Formatted one-41402.00
Run Code Online (Sandbox Code Playgroud)

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

我试过用这个.

    select to_char(sysdate,'J') from dual
Run Code Online (Sandbox Code Playgroud)

但输出是2456421

我知道这是朱利安的价值

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

APC*_*APC 5

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

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

trunc(sysdate) - to_date( '1900-01-01', 'yyyy-mm-dd') 
Run Code Online (Sandbox Code Playgroud)

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

ceil (sysdate - to_date( '1900-01-01', 'yyyy-mm-dd') )
Run Code Online (Sandbox Code Playgroud)


Mik*_*ll' 5

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

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

select current_date, current_date - date '1900-01-01'
from dual;
Run Code Online (Sandbox Code Playgroud)

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