presto/sql-将字符串时间戳转换为日期抛出错误



注意:我在 Qubole的 presto和sql命令引擎中运行我的查询。

我试图将我的字符串时间戳转换为日期,但没有一个选项正在奏效。

我的字符串时间戳看起来像2017-03-29 10:32:28.0我想像2017-03-29

一样拥有它

我尝试以下查询将此字符串 Timestamp转换为检索日期

1. select cast(created as date) from table1

价值不能截至日期:2017-05-26 17:23:58.0

2. select cast(from_iso8601_timestamp(created) as date) from table1

无效格式:" 2014-12-19 06:06:36.0"的畸形在" 06:06:06:36.0"

3. select date(created) from table1

值不能持续到日期:2012-10-24 13:50:00.0

如何将此时间戳转换为presto/sql中的日期?

在文档中所述,prestodb似乎期望 '2001-08-22 03:04:05.321'的时间戳,并在 '2001-08-22'中日期。

一种解决方案是在转换之前使用字符串函数提取字符串的相关部分。我们知道日期部分位于字符串中的第一个空间之前,因此。

如果您需要日期零件为A String datatype

split_part(created, ' ', 1)

如果您需要日期零件为日期datatype

cast(split_part(created, ' ', 1) as date)

您可以尝试使用以下解决方案之一:

  SELECT 
  '2017-03-29 10:32:28.0' AS input_string,
  DATE(date_parse('2017-03-29 10:32:28.0', '%Y-%m%-%d %H:%i:%s.%f')) AS solution_1,
  DATE(try_cast('2017-03-29 10:32:28.0' as timestamp)) AS solution_2

最新更新