【发布时间】:2020-03-05 10:46:38
【问题描述】:
我目前有带日期的表,设置为 YYYY-MM-DD 格式的 VARCHAR,例如:
2017-01-01
我正在使用的日期列称为“event_dt”
我习惯于在 Hive 中使用 day(event_dt), month(event_dt), year(event_dt) 等,但是当查询失败时,Presto 只是给了我 error executing query 没有其他解释。
所以,例如,我尝试过:
select
month(event_dt)
from
my_sql_table
where
event_dt = '2017-01-01'
我希望输出为:
01
但我得到的只是[Code: 0, SQL State: ] Error executing query
我尝试了 Presto 文档中列出的其他一些方法,但完全没有运气。我意识到这可能非常简单,但我们将不胜感激。
【问题讨论】:
-
查看该帖子:stackoverflow.com/questions/39880540/…。您必须首先将您的 varchar 转换为日期类型。
-
where event_dt = date '2017-01-01'? -
@LukStorms 是的,我可以在 where 子句中使用它指定范围,以及诸如“介于 '2017-01-01' 和 '2017-03-03' 之间的范围”,但我'我也在寻找方法让我的输出给出一个包含年/月/日等的列
-
哦,那个日期列实际上是一个 varchar。这样的事情会出错吗?
select month(cast('2019-10-15' as date)) -
@LukStorms 是的!谢谢,那行得通。你能指出我曾经找到的特定文档吗?