Redshift DATEDIFFとPostgreSQLの互換
Redshiftで時間の差分を取得する場合、DATEDIFF関数を利用する。
PostgreSQLにはDATEDIFF関数がない。
Redshit DATEDIFF関数
Redshift
DATEDIFF ( datepart, expression1, expression2)
datepartには、年、月、日、時、分、秒などの特定の粒度を指定し、expression1, expression2には日付の列、または、timestamp
の式を指定する。
DATEDIFFの結果は、expression2 - expression1
の結果が返る。
* expression2 > expression1 ⇒ 正
* expression2 < expression1 ⇒ 負
PostgreSQL で日付データの差分を取得する方法
そもそもPostgreSQLDATEDIFF関数はない。
しかし、PostgreSQLでは、timestamp
の式の差を求めることで差分を知ることができる。
timestamp1 - timestamp2
テストでの対応
本番では、RedshiftのSQLではDATEDIFFを使用していて、テストなどでローカル環境にRedshiftと同じスキーマでテストを実行したい場合、
RedshiftのDATEDIFF関数部分をtimestampの引き算で置き換える処理が必要になる。
今ひとつな対応に思えるので、違うアプローチを持っている方がいれば、教えて下さい!