如何在oracle sql developer中将数字转换为日期

时间:2014-10-06 07:37:41

标签: sql oracle date

我有一个excel格式数据集,需要导入到表中,一列是日期,但数据以数字格式存储,如41275,导入数据时,我试图选择数据格式yyyy-mm -dd,它给出一个错误:不是有效的月份,也尝试了MM / DD / YYYY也是错误:月份的日期必须介于1和月的最后一天之间。有没有人知道这个号码是什么?如何将它导入数据库时​​将其转换为日期格式?谢谢!

2 个答案:

答案 0 :(得分:2)

您正在寻找的表达方式(关于Excel的闰年错误AmmoQ提及)是:

case
    when yourNumberToBeImported <= 59 then date'1899-12-31' + yourNumberToBeImported
    else date'1899-12-30' + yourNumberToBeImported
end

然后,您可以

  • 在Oracle数据库中创建一个(全局)临时表,将数据从Excel加载到表中,然后将数据从临时表重新加载到目标表中,并包含上述计算。

或者你可以

  • 将数据从Excel加载到Oracle数据库中的持久表中,并在持久表上创建一个包含上述计算的视图。

答案 1 :(得分:0)

你得到的数字是特定日期的excel表示......

excel将日期存储为天数,从某个日期开始计算......确切地说:

1 = 1-JAN-1900
2 = 2-JAN-1900
...
30 = 30-JAN-1900

所以,为了让你的excel号码进入oracle日期,你可能想尝试这样的事情......

to_date('1899-12-31','yyyy-mm-dd') + 41275