如何在databricks sql中将字符串转换为日期

9gm1akwq  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(423)

我有一个名为opened\u dt的列,带有字符串格式的时间戳。

  1. +----------------------------+
  2. | opened_dt |
  3. +----------------------------+
  4. | 01/01/2015 21:50:00.000000 |
  5. +----------------------------+

跑步

  1. DESCRIBE TABLE 'myTable'

告诉我列的类型是string

  1. +-----------+-----------+---------+
  2. | col_name | data_type | comment |
  3. +-----------+-----------+---------+
  4. | opened_dt | string | null |
  5. +-----------+-----------+---------+

我想做的是:

  1. "Show me all entries starting 01.01.2019 until now".
  2. Which I translate to "select * from 'table' where opened_dt >= 01.01.2019".

在此之后,我将打开的日期从转换为日期。
使用时:

  1. SELECT cast(opened_dt AS timestamp)

只是给了我

  1. +------------+
  2. | opened_dt |
  3. +------------+
  4. | null |
  5. +------------+

使用时:

  1. SELECT to_date(opened_dt AS timestamp)

只是给了我

  1. +---------------------------------+
  2. | to_date('myTable'.`opened_dt`) |
  3. +---------------------------------+
  4. | null |
  5. +---------------------------------+

我尝试了其他尝试,但给出了错误的输出:

  1. SELECT * FROM 'myTable' WHERE opened_dt >= '01/01/2019 00:00:00.000000'
  2. SELECT * FROM 'myTable' WHERE opened_dt IN ('%2019%', '%2020%', '%2021%')

如何将字符串转换为日期以筛选所有小于2019年1月1日的日期?
我在databricks中寻找sql中的一些东西(其他答案在spark中)。

rks48beu

rks48beu1#

您可以使用 to_timestamp 并提供与列的日期格式匹配的日期格式字符串。

  1. select *
  2. from myTable
  3. where to_timestamp(opened_dt, 'dd/MM/yyyy HH:mm:ss.SSSSSS') between to_timestamp('2019-01-01') and current_timestamp()

相关问题