преобразование поля даты в метку времени в 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.