Метка времени не распознается Снежинкой

#snowflake-cloud-data-platform

Вопрос:

У меня есть строковое значение в снежинке следующим образом;

 "2018-03-08T22:43:23.848Z"

"2018-03-19T18:56:02.886Z"

"2018-03-06T12:39:57.432Z"
 

Пытаюсь преобразовать I в формат метки времени, используя следующий код;

 TO_TIMESTAMP(col_name::VARCHAR)
 

Я использовал VARCHAR, чтобы избавиться от двойных кавычек. Но я получаю следующую ошибку;

 Timestamp '{"dayOfMonth":28,"dayOfWeek":"WEDNESDAY","dayOfYear":87,"hour":3,"minute":13,"month":"MARCH","monthValue":3,"nano":493000000,"offset":{"id":"Z","rules":{"fixedOffset":true,"transitionRules":[],"transitions":[]},"totalSeconds":0},"second":17,"year":2018}' is not recognized
 

Пожалуйста, сообщите, если мой синтаксис неверен или есть лучшие способы справиться с этой ошибкой.

Ответ №1:

Метка времени ‘{«dayOfMonth»:28,»dayOfWeek»:»WEDNESDAY»,»dayOfYear»:87,»hour»:3,»minute»:13,»month»:»MARCH»,»monthValue»:3,»nano»:493000000,»offset»:{«id»:»Z»,»rules»:{«fixedOffset»:true,»transitionRules»:[],»transitions»:[]},»totalSeconds»:0},»second»:17,»year»:2018}» не распознается

Эта ошибка подразумевает, что строка JSON в сообщении об ошибке загрязнена столбцом, а затем TO_TIMESTAMP() не удается проанализировать значение, поскольку это не строка, подобная метке времени.

Сначала вы должны проверить свое приложение, чтобы определить, почему строка JSON была вставлена в столбец, и по возможности удалить их из столбца. Если его трудно удалить, вы можете игнорировать такие недопустимые значения с помощью TRY_TO_TIMESTAMP() функции.

Функции приведения, начинающиеся с TRY_ молчаливого возврата NULL , если аргумент не может быть проанализирован/приведен и не вызовет никаких ошибок.

См. Также: https://docs.snowflake.com/en/sql-reference/functions-conversion.html#label-try-conversion-functions

Ответ №2:

Использование явного формата:

 SELECT TRY_TO_TIMESTAMP(col_name::VARCHAR, 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
FROM tab