年末のタイムスタンプ
次の年の境界の Unix タイムスタンプを見つけ、年次レポートやスクリプト向けによく使う日付範囲の値をコピーします。
年末の境界
ほとんどのデータベースフィルターでは、きれいな境界は翌年の始まりの 00:00:00 UTC です。それを含まない上限として使ってください:created_at >= yearStart and created_at < nextYearStart。
含まない上限がより安全な理由
含まない上限は、1 秒ずれやミリ秒精度のバグを避けます。秒の端数を保存するデータベース間でもきれいに機能します。
年末の境界を使う
最も安全な年末のタイムスタンプは翌年の最初の瞬間で、含まない上限として使います。これは、ストレージが秒、ミリ秒、マイクロ秒、ナノ秒のどれを保持するかに依存せずに現在の年が止まる点を表します。これにより、同じフィルターがログ、API、SQL データベース間で移植可能になります。
- created_at <= lastSecondOfYear ではなく created_at < nextYearStart を使う
- JavaScript とフロントエンドのチャート範囲にはミリ秒値を使う
- Unix ツールとほとんどのバックエンドのタイムスタンプ列には秒値を使う
- 完全な年次範囲を確認するときは値を yearStart と組み合わせる
年末の値を検証する
コピーした値を UTC に戻して変換し、翌年の 1 月 1 日 00:00:00 であることを確認してください。年末と呼ばれていても、この境界は意図的に年の後の最初の瞬間であり、秒、ミリ秒、マイクロ秒の精度でデータベースフィルターをきれいに保ちます。また、最後に保存されたレコードが 23:59:59、23:59:59.999、それともより細かい端数値を使うかを決める必要もなくなります。