#sql #azure #azure-iot-hub #stream-analytics
#sql #azure #azure-iot-hub #поток-аналитика
Вопрос:
У меня есть временная метка, поступающая в виде миллисекунд после 01.01.1970 ([временная метка] ниже — имя столбца для данных), и мне нужно добавить дополнительный столбец, который использует SQL для получения этих миллисекунд и преобразования его в формат даты / времени.
Я попытался:
SELECT DATEADD(MILLISECOND, [timestamp] %1000, DATEADD(SECOND, [timestamp] /1000, '19700101'))
Я получаю сообщение об ошибке:
Не удается преобразовать значение ‘19700101’ типа ‘nvarchar (max)’ в тип ‘datetime’ в выражении ‘DATEADD (SECOND, [отметка времени] / 1000 , ‘19700101’ )’. В строке «2» и столбце «152».
Любая помощь приветствуется, спасибо! — M
Комментарии:
1. пожалуйста, укажите формат даты.
2. вместо этого нужно было указать 19700101 в формате временной метки ISO? итак, «1970-01-01T00:00:00Z»?
3. @silent как выглядят данные временной метки, вы можете мне их показать?
4. @leon Yue Поступающий формат данных временной метки выглядит следующим образом: 1607040000021. Быстрый поиск в Google показывает, что это может называться «Эпоха UNIX»?
5. @Silent Я еще не пробовал этого, к сожалению, я не могу изменить формат данных до того, как он попадет в IoT Hub, изменить его можно, только запросив его через Stream Analytics.
Ответ №1:
Вместо этого вам нужно указать 19700101
формат временной метки ISO, поэтому 1970-01-01T00:00:00Z
SELECT DATEADD(MILLISECOND, [timestamp] %1000, DATEADD(SECOND, [timestamp] /1000, '1970-01-01T00:00:00Z'))