在oracle sql中将unix时间格式转换为日期/时间格式

时间:2013-12-11 17:09:03

标签: sql oracle datetime unix-timestamp

我有一个名为data_time(varchar)的列,大约有20万行。我想将这些行转换为普通的日期/时间。

我试过这个没有运气。

连续示例值:927691200000000

SELECT * TO_DATE('19700101',yyyymmdd') + ((date_time/1000)/24/60/60) thedate 2 FROM table1

我是SQL新手,非常感谢帮助!

谢谢。

1 个答案:

答案 0 :(得分:3)

我清理了明显的语法错误,添加了一些日期格式,并且只是对您提供的一个样本值进行了硬编码,因此:

SELECT to_char(TO_DATE('19700101','yyyymmdd') + ((927691200000000/1000)/24/60/60),'DD-MON-YYYY') thedate  FROM dual;

那产生了:

ERROR at line 1:
ORA-01841: (full) year must be between -4713 and +9999, and not be 0

这表明你的unix时间(可能是?)以微秒表示,而不是毫秒。

所以,我修改了查询:

SELECT to_char(TO_DATE('19700101','yyyymmdd') + ((927691200000000/1000000)/24/60/60),'DD-MON-YYYY') thedate  FROM dual;

返回:

THEDATE
-----------
26-MAY-1999

我认为哪个是正确的?

希望有所帮助....