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

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

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

+----------------------------+
|        opened_dt           |
+----------------------------+
| 01/01/2015 21:50:00.000000 |
+----------------------------+

跑步

DESCRIBE TABLE 'myTable'

告诉我列的类型是string

+-----------+-----------+---------+
| col_name  | data_type | comment |
+-----------+-----------+---------+
| opened_dt | string    | null    |
+-----------+-----------+---------+

我想做的是:

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

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

SELECT cast(opened_dt AS timestamp)

只是给了我

+------------+
| opened_dt  |
+------------+
| null       |
+------------+

使用时:

SELECT to_date(opened_dt AS timestamp)

只是给了我

+---------------------------------+
| to_date('myTable'.`opened_dt`)  |
+---------------------------------+
| null                            |
+---------------------------------+

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

SELECT * FROM 'myTable' WHERE opened_dt >= '01/01/2019 00:00:00.000000' 

SELECT * FROM 'myTable' WHERE opened_dt IN ('%2019%', '%2020%', '%2021%')

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

rks48beu

rks48beu1#

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

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

相关问题