[英]how to convert excel serial date number to date in Oracle SQL
我试图将相同的 Excel 日期格式转换为 dd/mm/yyyy 格式。 但我没有得到正确的结果。
43236 16-May-18 43249 29-May-18 43238 18-May-18 43228 8-May-18 43238 18-May-18
我正在使用以下查询
SELECT to_date('31-12-1899','dd-mm-yyyy')+43236 FROM dual UNION ALL SELECT to_date('31-12-1899','dd-mm-yyyy')+43249 FROM dual UNION ALL SELECT to_date('31-12-1899','dd-mm-yyyy')+43238 FROM dual UNION ALL SELECT to_date('31-12-1899','dd-mm-yyyy')+43228 FROM dual UNION ALL SELECT to_date('31-12-1899','dd-mm-yyyy')+43238 FROM dual;
我得到以下不正确的结果
17-MAY-18 30-MAY-18 19-MAY-18 09-MAY-18 19-MAY-18
请帮我解决这个问题。 我正在使用 Oracle 11g R2。
您仅差 1。使用30 Dec 1899 (而不是31 Dec 1899 )作为索引 0 的参考日期。
SELECT to_date('31-12-1899','dd-mm-yyyy') + 43236 FROM dual
它是 1899 年 12 月 30 日而不是 1900 年 1 月 1 日的原因有两个:
如果我理解正确,您可以尝试使用TO_DATE
并设置语言文化,然后为您的预期格式设置TO_CHAR
。
select TO_CHAR(TO_DATE('16-May-18','DD-Mon-YY', 'nls_date_language = american'),'DD/mm/yyyy')
from dual
或者像这样。
SELECT TO_CHAR(to_date('31-12-1899','dd-mm-yyyy')+43236,'DD/mm/yyyy') FROM dual
您可以在下面尝试使用 to_char() 函数
select to_char(TO_date('31-12-1899', 'dd-mm-yyyy')+43236,'DD/MM/YYYY') from dual
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.