Как получить дату и время отдельно в двух столбцах из поля отметки времени 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

Другие вопросы по тегам