Снежинка: Преобразование различных форматов времени unix в datetime

#sql #snowflake-cloud-data-platform #datetime-format

Вопрос:

Данные не всегда чистые и правильно форматируются. Рассмотрим случай времен unix.

Есть ли способ справиться со всеми этими случаями с помощью одного преобразования в дату-время снежинки?

 SELECT '1620205203.611':: UNION ALL SELECT '1620205203611':: UNION ALL SELECT '1.620205203611000e 09'::  

ожидаемая дата и время должны быть 2021-05-05 09:00:03.611

Ответ №1:

DATEADD можно было бы использовать:

 WITH cte(c) AS (  SELECT '1620205203.611'  UNION ALL  SELECT '1620205203611'  UNION ALL  SELECT '1.620205203611000e 09' )  SELECT cte.c,   DATEADD(SECOND, CASE WHEN cte.c gt; 1e 11 THEN cte.c/1000 ELSE cte.c END  ,'1970-01-01'::DATE) AS result FROM cte;  

Выход:

введите описание изображения здесь