web-dev-qa-db-ja.com

Presto(Athena)で文字列をタイムスタンプに変換する方法は?

文字列のデータ型(例: '2018-03-27T00:20:00.855556Z')をタイムスタンプ(例: '2018-03-27 00:20:00')に変換したい。

実際、私はAthenaでクエリを実行します。

select * from tb_name where elb_status_code like '5%%' AND 
date between DATE_ADD('hour',-2,NOW()) AND NOW(); 

しかし、私はエラーが発生しました:

SYNTAX_ERROR:行1:100:varcharがタイムゾーン付きのタイムスタンプとタイムゾーン付きのタイムスタンプの間にあるかどうかを確認できません

このクエリは、クエリで修飾されていない限り、「vf_aws_metrices」データベースに対して実行されました。フォーラムにエラーメッセージを投稿するか、クエリID:6b4ae2e1-f890-4b73-85ea-12a650d69278でカスタマーサポートに連絡してください。

理由:日付が文字列形式であり、タイムスタンプに変換する必要があるため。しかし、私はそれを変換する方法がわかりません。

4
Harshit Agrawal

from_iso8601_timestampを使用してみてください。タイムスタンプ関連の関数の詳細については、以下のアドレスにアクセスしてください。 https://docs.starburstdata.com/latest/functions/datetime.html

presto:tiny> select from_iso8601_timestamp('2018-03-27T00:20:00.855556Z');
            _col0
-----------------------------
 2018-03-27 00:20:00.855 UTC
(1 row)

クエリは次のようになります。

select * from tb_name where elb_status_code like '5%%' AND 
from_iso8601_timestamp(date) between DATE_ADD('hour',-2,NOW()) AND NOW(); 
5
kokosing

私は次の方法を使用しました、そしてそれは私のために働きました。

date_parse(eta,'%Y-%m-%d %h:%i:%s')

詳細な出力については、以下のドキュメントを参照してください

プレストの日時

1
Dheeraj

phpでは、date関数を使用して文字列を日付に変換できます

$timestamp = date('Y:m:d H:i:s',strtotime('2018-03-27T00:20:00.855556Z'));

in mysql日付フィールドのデータ型を変更する必要があります。

0

以下のようなものを試すことができます。

SELECT DATE_FORMAT('2018-03-27T00:20:00.855556Z','%Y-%m-%d %H:%i:%s');

デモ

0
Alpesh Jikadra