我试图将相同的 Excel 日期格式转换为 dd/mm/yyyy 格式。但我没有得到正确的结果。
43236 16-May-18 43249 29-May-18 43238 18-May-18 43228 8-May-18 43238 18-May-18
我正在使用以下查询
从双选择 to_date('31-12-1899','dd-mm-yyyy')+43236
联合所有
从双选择 to_date('31-12-1899','dd-mm-yyyy')+43249
联合所有
从双选择 to_date('31-12-1899','dd-mm-yyyy')+43238
联合所有
从双选择 to_date('31-12-1899','dd-mm-yyyy')+43228
联合所有
从双中选择 to_date('31-12-1899','dd-mm-yyyy')+43238;
我得到以下不正确的结果
17-MAY-18 30-MAY-18 19-MAY-18 09-MAY-18 19-MAY-18
请帮我解决这个问题。我使用的是 Oracle 11g R2。
最佳答案
您只是落后了 1。使用1899 年 12 月 30 日(而不是1899 年 12 月 31 日)作为索引 0 的引用日期。
SELECT to_date('31-12-1899','dd-mm-yyyy') + 43236 FROM dual
之所以是 1899 年 12 月 30 日而不是 1900 年 1 月 1 日,有两个原因:
- 在 Excel 中,1900 年 1 月 1 日保存为 1(而不是 IT 人员期望的 0)。
- Excel 将 1900 年视为闰年,尽管事实并非如此。因此,Excel 中还有 1900 年 2 月 29 日的数字,但该数字并不存在。
关于sql - 如何将 Excel 序列日期数字转换为 Oracle SQL 中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53204725/