當我在 Amazon Athena 表格中查詢 TIMESTAMP 數據欄位時,我得到空的結果或查詢失敗。數據存在於輸入文件中。
簡短說明
TIMESTAMP 資料的格式可能錯誤。Athena 需要使用 Java TIMESTAMP 格式:
YYYY-MM-DD HH:MM:SS.fffffffff
若要將 TIMESTAMP 資料變更為正確的格式:
- 將欄位定義為 STRING。
- 使用 Presto 的日期和時間函數將查詢中的欄位讀取為 DATE 或 TIMESTAMP。
解決方法
將欄位定義為 STRING
請執行類似下列內容的命令:
CREATE EXTERNAL TABLE 'test' ('ts' STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
LOCATION 's3://doc-example-bucket/path-to-data/'
使用 Presto 的日期和時間函數將查詢中的欄位讀取為 DATE 或 TIMESTAMP
如果您的輸入資料格式如下:
20200921T015005
20200923T095605
然後使用date_parse函數,如下面的範例所示:
SELECT date_parse(ts,'%Y%m%dT%h%i%s') FROM timestamptestcsv3
**注意:**date_parse(字符串和格式)函數中的格式必須是數據中使用的 TIMESTAMP 格式。
如果您的輸入資料是 ISO 8601 格式,如下所示:
2020-11-14T02:34:48Z
然後使用from_iso8601_timestamp()函數將 ts 字段讀取為 TIMESTAMP。範例:
SELECT from_iso8601_timestamp(ts) FROM timestamptestcsv3
相關資訊
Amazon Athena 的數據類型