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
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)
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会返回您正在寻找的数字,但是我想在我发誓之前测试多个时区等.