1

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

    Date-08-May-13
    Formatted one-41402.00

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

我试过用这个。

    select to_char(sysdate,'J') from dual

但输出是 2456421

我知道这是儒略价值观

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

4

2 回答 2

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') )
于 2013-05-08T16:00:23.440 回答
5

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

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

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

这将为我当前的连接返回 41400.67037037037。四舍五入并为围栏张贴添加 1 将返回您要查找的数字,但我想在多个时区等情况下对其进行测试,然后再发誓。

于 2013-05-08T16:00:34.020 回答