преобразование поля даты в метку времени в Databricks SQL

У меня есть исходная таблица в блоках данных, в которой есть поле с именем. Я обнаружил, что dateпохоже на временную метку. Например, это данные date = 2021-07-09 00:07 , date = 2021-12-21 09:19.

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

      cast(date as string) = 2021-07-09 00:07:09.529, 2021-12-21 09:19:21.019

Я хотел бы знать, почему преобразование его в строку дает миллисекунды и есть ли какая-либо функция, подобная to_timestamp, для преобразования даты вместо преобразования в строку.

Можно ли сравнивать дату, представленную в виде строки, с другими датами, представленными в виде строки?

1 ответ

если поле имеет метку времени, то то, что вы видите, является просто визуальным представлением, в котором могут быть опущены некоторые несущественные детали - внутренне оно хранится в более компактном представлении, например, longпредставляющее количество миллисекунд. Но когда вы выполняете преобразование в строку, используется это компактное представление, и вы получаете все детали.

Транслировать timestampвведите в dateтипа, просто сделай cast(date as date). Если вы хотите преобразовать строку в дату или временную метку, просто используйте функции to_date или to_timestamp , которые позволяют указать строку формата, которая будет использоваться для разбора строковых компонентов. И если вы хотите преобразовать поле даты или метки времени в строку и управлять форматом строки, вам нужно посмотреть на функцию date_format .

PS Вы всегда можете обратиться к Справочнику по SQL , который является частью официальной документации Databricks.

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