雅典娜date_parse日期,带有可选的毫秒字段



我在 S3 中有日期,我使用它创建了一个 Athena 表。我在 S3 中有一些 json 格式的日期条目,雅典娜在运行查询时不接受这些条目作为日期或时间戳。

使用 AWS Athena 作为查询引擎

示例 json :

{"创建日期":"2018-09-12T15:49:07.269Z", "otherfield":"value1"} {"创建日期":"2018-09-12T15:49:07Z", "otherfield":"value2"}

AWS Glue 将这两个字段都作为字符串,当我将它们分别更改为时间戳和日期时,围绕时间戳的查询不起作用,在时间戳字段上给出 ValidationError。

无论如何,我找到了一种使用 prestodb date_parse函数的方法,但它也不起作用,因为有些字段有毫秒,而另一些则没有。

parse_datetime(creationdate, '%Y-%m-%dT%H:%i:%s.%fZ'( parse_datetime(creationdate, '%Y-%m-%dT%H:%i:%sZ'(

由于存在不同的条目而失败,即一个具有毫秒 %f 和一个没有 有没有办法提供一个解析器,正则表达式,以便能够在sql查询执行期间将这些字符串转换为Date?

您可以使用from_iso8601_timestamp函数,而不是提供时间戳格式。

这样,所有时间戳都会被解析。

select from_iso8601_timestamp(creationdate) from table1;

你只需要日期吗?

如果是这样,您可以使用date_parse(字符串,格式(。

date_parse(creationdate, ‘%Y-%m-%d’)

使用这个:

SELECT requestdatetime, remoteip, requester, key
FROM MYDB.TABLE
WHERE parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2020-10-14:00:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2020-10-14:23:59:59','yyyy-MM-dd:HH:mm:ss');

相关内容

  • 没有找到相关文章

最新更新