如何在databricks sql中将字符串转换为日期
Posted
技术标签:
【中文标题】如何在databricks sql中将字符串转换为日期【英文标题】:How to convert string to date in databricks sql 【发布时间】:2021-03-03 09:49:42 【问题描述】:我有一个名为 opens_dt 的列,其中包含字符串格式的时间戳。
+----------------------------+
| opened_dt |
+----------------------------+
| 01/01/2015 21:50:00.000000 |
+----------------------------+
跑步
DESCRIBE TABLE 'myTable'
告诉我该列是字符串类型
+-----------+-----------+---------+
| 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".
在此之后,我将 opens_dt 转换为当前日期。
使用时:
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%')
如何将字符串转换为日期以过滤所有早于 01.01.2019 的日期?
我在 DATABRICKS 的 SQL 中寻找一些东西(其他答案在 spark 中)。
【问题讨论】:
【参考方案1】:您可以使用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()
【讨论】:
感谢您的快速回复。我用 to_timestamp('2021-03-02') 和 to_timestamp('2021-02-03') 对其进行了测试,但我得到的输出是“01/04/2021 16:39:00.000000” 对不起,我不知道你以后有条目。看到编辑的答案? @Wondarar 我也没有哈哈。感谢您的编辑,工作正常:) 同时我尝试了另一次尝试 "WHERE f11.opened_dt LIKE '%2019%' OR f11.opened_dt LIKE '%2020%' OR f11.opened_dt LIKE '%2021%'" 但自从我加入此查询中的 10 个表会导致主要的性能问题。我想问题是通配符是强制性的,以及连接表的数量。以上是关于如何在databricks sql中将字符串转换为日期的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure Databricks SQL 中将字段值转换为逗号分隔
如何在 Datagrip 中将 Java SQL 字符串转换为 SQL?