s3://<バケット名>/year=<年>/month=<月>/day=<日>
の様にHive形式でyear/month/dayでパーティションを切っているデータに対してAthenaで月を跨いだ日付の範囲検索が出来る様にしました。
元々はこの様な動的に生成するクエリを書いていました( {{ y.start }}
には範囲の開始年 {{ y.end }}
には範囲の終了年といった値が入ります)
SELECT * FROM table_name WHERE {{ y.start }} <= year AND year <= {{ y.end }} AND {{ m.start }} <= month AND month <= {{ m.end }} AND {{ d.start }} <= day AND day <= {{ d.end }};
2022-12-10から2023-01-30といった月を跨いだ時に
SELECT * FROM table_name WHERE 2022 <= year AND year <= 2023 AND 12 <= month AND month <= 1 AND 10 <= day AND day <= 30;
の様になり常に条件がFALSEになってしまい適切なレコードが取得できなかったのですが、BETWEEN句をこの様に使うことで取得できる様になりました。