【发布时间】: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 中)。
【问题讨论】:
标签: sql apache-spark date apache-spark-sql