![]() |
1
3
创建表时无法转换数据。但您可以在查询时获取数据。 您可以使用date\u parse(字符串,格式)->时间戳函数。这里提到了更多细节。 对于您的用例,您可以执行如下操作
注意:根据字符串的类型,您必须为月份(始终为两位数或非两位数)、天、小时(12或24小时格式)等选择合适的说明符 |
![]() |
2
1
(我的回答有一个前提:您使用的是OpenCSVSerDe。例如,它不适用于LazySimpleSerDe。) 如果可以选择更改输入CSV文件的格式,则应将时间戳转换为 UNIX Epoch Time . 这是OpenCSVSerDe所期望的格式。 例如,您的示例CSV如下所示:
它应该是:
这些整数是自1970年1月1日午夜以来,每个原始日期的毫秒数。
然后,您可以运行
如果您使用
如您所见,在Athena上键入TIMESTAMP包括毫秒。 我写了一篇关于在OpenCSVSerDe中使用类型TIMESTAMP和DATE的更全面的解释。你可以读它 here . |
![]() |
panc · AWS Athena的分区数据导致S3中有许多小文件 7 年前 |
![]() |
Louis · 是否可以为AWS Athena查询指定参数? 7 年前 |
![]() |
Data_101 · 在Amazon Athena中创建表时转换时间戳 7 年前 |