Как преобразовать дату и время Oracle/Java в длинный тип

У меня есть временные метки из Oracle, хранящиеся в файле CSV с типом данных long. Эта временная метка генерируется с помощью функции Java getTime(), см. https://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html

Временная метка выглядит, например, так: 1723207241234. В документации Oracle я нашел, что это миллисекунды с 1 января 1970 года, 00:00:00 по Гринвичу.

Итак, мне нужно проанализировать временную метку, созданную с помощью функции Java в Oracle (получить дату и время из временной метки), и сохранить эти значения в таблицах SAS. Есть ли способ сделать это?

🤔 А знаете ли вы, что...
Java - это объектно-ориентированный язык программирования.


54
1

Ответ:

Решено

SAS хранит дату и время с секунд, начиная с 1 января 1960 года, 00:00:00 по Гринвичу. Чтобы преобразовать это значение в дату и время SAS, необходимо добавить 10 лет к значению даты и времени Unix в секундах. '01JAN1970:00:00'dt в SAS конвертируется в 10 лет в секундах.

data want;
    time = 1723207241234/1000 + '01JAN1970:00:00'dt;
    format time datetime20.;
run;
time
09AUG2024:12:40:41