以前にも同様のトピックがあります:夏時間とタイムゾーンのベストプラクティス
私が尋ねようとしていることは関連していますが、異なります。
日付処理の推奨プラクティスは何ですか?
もっと「論理的な」日付を探しています。たとえば、アプリケーションの営業日、または特定の人の生年月日です。
通常、私はそれを日付(Oracleの場合)として0:0:0の時間で保存します。アプリケーションのすべてのコンポーネントが同じタイムゾーンにある場合、これは正常に機能します。DB内のその日付はDBのタイムゾーンの0:0:0を意味します。別のタイムゾーンのユーザーにデータを提示している場合、たとえば、日付2012-12-25 0:0:0であるため、問題が発生しやすくなります。ロンドン時間は実際には2012-12-2416:0:0香港時間です。
私は2つの解決方法を考えましたが、どちらにも欠点があります。
まず、文字列として保存します。欠点は明らかです。アプリやクエリで多くの会話を行う必要があり、日付の計算が多く失われました。
2番目の方法は、日付として保存することですが、事前定義されたタイムゾーン(UTCなど)を使用します。アプリケーションが日付を表示しているときは、UTCタイムゾーンとして表示する必要があります。ただし、アプリケーションコードで多くのタイムゾーン操作が必要になります。
日付を処理するための推奨される方法は何ですか?または、ほとんどの人は、上記の3つのアプローチ(同じタイムゾーンであると想定するものを含む)のいずれかを使用するだけですか?