Как получить дату и время отдельно в двух столбцах из поля отметки времени HANA unix?
Значение метки времени unix поступает в HANA через службы данных из БД MySQL.
Однако я могу найти дату, используя следующее утверждение, но хотел бы знать, есть ли какие-либо встроенные функции в SAP HANA или в Data Services Designer, которые могут выполнять эту работу? Также есть ли способ получить время из результата, как у нас есть TO_DATE для даты, отличной от RIGHT()?
SELECT TO_VARCHAR (ADD_SECONDS( '1970-01-01 00:00:00', "1452261405"))
и он вернется 2016-01-08 13:56:45
2 ответа
Вы можете использовать встроенные функции HANA TO_DATE и TO_TIME:
SELECT TO_TIMESTAMP (ADD_SECONDS( '1970-01-01 00:00:00', '1452261405')) TIMESTAMP,
TO_DATE (ADD_SECONDS( '1970-01-01 00:00:00', '1452261405')) DATE,
TO_TIME (ADD_SECONDS( '1970-01-01 00:00:00', '1452261405')) TIME
from PUBLIC.DUMMY
Дает тебе:
Пт Янв 2016 2016 13:56:45 GMT+0000 (UTC) 08.01.2016 13:56:45
Этот вид преобразования действительно может быть реализован в пользовательской функции (UDF). Примерно так может сделать ваш код более легким для чтения:
FUNCTION "DEVDUDE"."sandpit::epoch_to_seconddate" (IN epoc_date integer )
RETURNS SQL_SECONDDATE seconddate
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER AS
BEGIN
SQL_SECONDDATE = ADD_SECONDS( to_seconddate('1970-01-01 00:00:00'), :epoc_date);
END;
Тогда вы можете просто использовать его, как если бы это была встроенная функция:
select "sandpit::epoch_to_seconddate"(-1452261405) from dummy;
SQL_SECONDDATE
1923-12-25 10: 03: 15.0