#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