简体   繁体   中英

Cannot convert number to date

I have problem converting number column to date, I did the following

SELECT to_date('12-30-1899 1:00:00','MM-DD-YYYY HH24:Mi:SS') + (createDate/1440) 
FROM table_A;

and got the query result

10/17/5826 17:18

The month and date including hours and seconds is right but the year is different I got 5826. Its also the same for the other rows i got different results for year. I did follow some examples on this here . But still got wrong result. Can anyone help on this thanks.

The samples below are createDate column values:

1300844909778
1302831103113
1303210978316
1396963615616

Date arithmetic in Oracle assumes days . As it stands you are dividing a very large number by 1440 and adding that number of days to your starting date. That's why you're getting results in the far future.

So what value does createdate represent? It's clearly not an actual date. Your choice of 1440 as denominator suggests you think it's meant to be "number of minutes" but if the dates are so far out of expectation that is not it either.


I thought could be values represented in the Unix epoch because the numbers start with 13 . Except that they're way too big. Current Unix timestamps should be ten digits. You've got thirteen digits.

Could they be Unix epoch plus milliseconds?

I have created a SQLfiddle to test this theory. Treating the first ten digits of your createdate values as seconds and adding that number to the Unix date produces sensible dates. Check it out .

So the theory holds water. But I doesn't help with your query. Adding two dates together doesn't make any sense. What are you actually trying to achieve? If your're looking for an interval you need to subtract the earlier date from the later one.

The createDate could be the number of milliseconds. It is just a guess. If so, then maybe this helps:

SELECT to_date('12-30-1899 1:00:00','MM-DD-YYYY HH24:Mi:SS') + (1300844909778/(1000*60*60*24))
FROM dual
/

3/21/1941 2:48:30 AM

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM