Преобразование метки времени Unix - Spotfire Analyst

Я импортирую данные SQL в Spotfire Analyst. Все поля даты и времени имеют форму отметки времени Unix. Как лучше всего преобразовать это в фактический формат даты, которым я могу управлять в Spotfire?


person I Love You    schedule 22.04.2015    source источник


Ответы (2)


Используя вычисляемый столбец, вы можете рассчитать дату и время на основе эпохи UNIX.

Мы просто добавляем наши секунды к DateTime эпохи UNIX (01 января 1970 00:00:00 UTC), чтобы получить результат. Ниже приведен пример времен UNIX, когда я начал писать этот пост.

DateAdd("second",1429733486,DateTime(1970,1,1,0,0,0,0))

Ниже приведено то, что должно сработать для вас:

DateAdd("second",[UNIX_TIMESTAMP_COLUMN],DateTime(1970,1,1,0,0,0,0))

Имейте в виду, что эти даты будут в часовом поясе UTC в соответствии с эпохой 1 января 1970 года. Если они вам нужны в вашем часовом поясе, вам, возможно, придется соответствующим образом отрегулировать их с помощью дополнительных функций DateAdd, добавляющих / вычитающих время в соответствии с текущими преобразованиями. Кроме того, если вы соблюдаете летнее время, вам может потребоваться добавить некоторую дополнительную логику случая, чтобы справиться с этим.

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы или вам нужны дополнительные разъяснения.

person clesiemo3    schedule 22.04.2015
comment
Есть ли способ использовать UDF на стороне SQL? Там много столбцов даты и времени, для которых мне пришлось бы это сделать. - person I Love You; 23.04.2015
comment
В аналогичном логическом формате вы можете изменить его в своем операторе выбора SQL, чтобы выполнить базовую математику с эпохой. Добавление дат в SQL (по крайней мере, Oracle SQL) выполняется в днях. Например. Sysdate-1 - это вчера. Таким образом, мы можем добавить нашу временную метку UNIX, разделенную на (60 * 60 * 24) [секунды / мин * мин / час * часы / день], и превратить это в строку с to_char: select to_char(to_date('01/01/1970','mm/dd/yyyy')+1429733486/86400) from dual Вы можете заменить 1429733486 нужным столбцом и установить вверх каждый столбец, подобный этому, в вашем SQL. - person clesiemo3; 23.04.2015
comment
@ILoveYou Обратите внимание: если значение столбца unixepoch слишком велико, вам может потребоваться сначала преобразовать его в Real. Мне пришлось это сделать в нашем, потому что столбец был типа BigInteger - это SQL Server. - person Keng; 03.06.2016

В 7.0 и более поздних версиях вы можете использовать

FromEpohTimeSeconds([UNIXDATE])

or

FromEpohTimeMilliseconds([UNIXDATE])
person Keng    schedule 03.06.2016