【问题标题】:casting a date field to a timestamp in Databricks SQL将日期字段转换为 Databricks SQL 中的时间戳
【发布时间】:2022-01-23 09:32:43
【问题描述】:

我在 databricks 中有一个源表,其中有一个名为 date 的字段。我发现date 就像一个时间戳。比如它的数据是date = 2021-07-09 00:07date = 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 的函数来转换日期而不是转换为字符串。

可以将转换为字符串的日期与转换为字符串的其他日期进行比较吗?

【问题讨论】:

  • 当我执行相同的命令时,我没有遇到这个问题。你能分享一下我通过 %sql 魔法命令和 databricks SQL(sql 端点)在 databricks notebook 中尝试过的截图吗?从日期转换为字符串时,双方都没有填充毫秒。

标签: apache-spark-sql databricks databricks-sql


【解决方案1】:

如果date 字段具有时间戳,那么您看到的只是视觉表示,可能会省略一些非必要的细节 - 在内部它以更紧凑的表示形式存储,例如,long 表示毫秒数。但是,当您确实转换为字符串时,会使用这种紧凑的表示形式并且您会获得所有详细信息。

要将timestamp 类型转换为date 类型,只需执行cast(date as date)。如果要将字符串转换为日期或时间戳,只需使用to_dateto_timestamp 函数,它们允许指定用于解析字符串组件的格式字符串。而如果要将日期或时间戳字段转换为字符串并控制字符串的格式,则需要查看date_format函数。

附:您可以随时参考 Databricks 官方文档中的SQL Reference

【讨论】:

  • 如果我使用to_timestamp,我得到的结果是2021-07-09 00:09,其中作为字符串输出2021-07-09 00:09:09.571
猜你喜欢
  • 2020-03-23
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 2019-07-21
  • 2014-05-16
  • 2014-12-03
  • 2020-12-01
  • 2017-04-06
相关资源
最近更新 更多