【发布时间】:2017-02-14 06:52:42
【问题描述】:
我在 presto 并且有一个格式化为 varchar 的日期,看起来像 -
7/14/2015 8:22:39 AM
我查看了 presto 文档并尝试了各种方法(转换、date_format、使用 split_part 解析然后转换),但没有将其转换为可以与 date_diff 等函数一起使用的日期格式。
我试过了:
cast(fieldname as timestamp)
date_format(fieldname, '%Y-%m-%d %T)
两者都给我这样的错误
'Value cannot be cast to timestamp: 3/31/2016 6:05:04 PM'
如何转换?
【问题讨论】:
-
我认为问题出在日期格式上。你能像
2016-03-31 6:05:04 PM这样改变格式并投射它吗? -
您应该尝试 ISO 8601 格式“2016-03-31 18:05:04”。我几乎可以肯定它应该可以工作
-
@coladict 我试过
select cast('2016-03-31 6:05:04 PM' as timestamp),但这也不起作用 -
不是
6:05:04 PM,对于上午必须是06:05:04,对于下午必须是18:05:04。 -
@coladict 这可能是数据的格式问题,但前导 0 是演员应该解决的问题。但即使我在上面的例子中添加前导 0,我仍然会得到同样的错误。