当前位置: 首页 > 知识库问答 >
问题:

Athena date_parse用于带有可选毫秒字段的日期

步博厚
2023-03-14

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


    {"creationdate":"2018-09-12T15:49:07.269Z", "otherfield":"value1"}
    {"creationdate":"2018-09-12T15:49:07Z", "otherfield":"value2"}

AWS Glue将这两个字段都作为字符串,并且当将它们分别更改为timestamp和date时,围绕timestamp的查询将不起作用,从而在timestamp字段上提供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查询执行期间将这些字符串转换为日期?

共有1个答案

郭永安
2023-03-14

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

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

select from_iso8601_timestamp(creationdate) from table1;
 类似资料:
  • 我试图将字符串日期解析为特定的日期格式,但当我使用中的可用选项时,总是得到不同的结果。这是我试图解析的字符串: 我可以使用simpledateformat或任何其他日期格式化程序来实现这一点吗?任何帮助都将得到高度赞赏。

  • 问题内容: 我有一个DatePicker d;我需要获取日期的毫秒值。(自1970年以来的毫秒值) 我该怎么做? 问题答案: 创建一个日历对象,并从日期选择器和today.getTimeInMillis()中设置日期和时间。

  • 问题内容: 在我的项目中,我在sqllite数据库中保存毫秒,默认情况下,我保存 在数据库中,但是用户可以从日期选择器中选择以前的日期吗?但是,当用户从日期选择器中选择前一个或以后的几天时,我可以保存什么呢?如何获得长(毫秒)格式的那一天? 问题答案: 创建一个实例并设置所需的日期。然后致电。有关更多信息,请参见前面的SO问题的答案。 编辑 要设置日历日期,您可以使用以下方法: 有关更多信息,请参

  • 我有一个控制器尝试用可选字段搜索。JPA实体类定义为:

  • 问题内容: 在pandas数据框中有一个datetime列,其值如下: 我想知道如何舍入这些值,摆脱毫秒,仅将日期,小时,分钟和00表示为秒,如下所示: 问题答案: 使用与用于分钟设置: 我想将时间值更改为下一个值:

  • 问题内容: 我需要在没有毫秒的情况下在我的SQL Server数据库中插入.net DateTime。 我希望数据库中的值是例如: 秒是更准确的值。 但是当我进行这样的插入时,它会增加实际的毫秒数: 如何以最简单的方式实现这一目标? 问题答案: 尽管您 可以 按照注释中的建议减去毫秒数,但仍将获得亚毫秒级的值。那 可能 不会引起问题,但是驱动程序可能会将亚毫秒值四舍五入到整毫秒。这是一种更干净的(