我试图将相同的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。
答案 0 :(得分:1)
您即将离开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日,这是双重原因:
答案 1 :(得分:0)
如果我的理解正确,您可以尝试使用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
答案 2 :(得分:0)
您可以在下面尝试使用to_char()函数
select to_char(TO_date('31-12-1899', 'dd-mm-yyyy')+43236,'DD/MM/YYYY') from dual