免責事項:日付/時刻を表す最良の方法は、Unix タイムスタンプまたは PHP のDateTime
クラスと Oracle のDATE
データ型のいずれかであることを十分に認識しています。
邪魔にならないので、時間データだけを格納するのに最も適切なデータ型は (PHP と Oracle で) 何であるか疑問に思っています。日付コンポーネントの保存には興味がありません。時間だけ。
たとえば、employee
典型的な勤務スケジュールを保存したいエンティティがあるとします。この従業員は、午前 8 時から午後 5 時まで勤務する可能性があります。これらの時刻には日付コンポーネントがありません。では、それらを格納して表すために何を使用する必要がありますか?
私が検討したオプション:
- 文字列として、標準形式 (おそらく 24 時間 HH:MM:SS+Z) を使用します。
- 0 <= n < 24 の範囲の数値として、小数部分は分/秒を表します (タイムゾーン情報を保存できませんか?)。
- などの正規化された/未使用の日付コンポーネントを持つPHP
DateTime
および Oracleとして。DATE
0001-01-01
- 上記と同じですが、代わりに Unix タイムスタンプのみを使用します (PHP
integer
および OracleTIMESTAMP
)。
現在、上記の #3 を使用していますが、これらのデータ型を誤用しているように見えて、ちょっといらいらしています。ただし、私が知る限り、最高の使いやすさを提供します。比較と並べ替えは、PHP と Unix の両方で期待どおりにすべて機能し、タイムゾーン データを維持でき、データを表示するために必要な特別な操作は実際にはありません。
私は何かを見落としていますか、それとももっと適切な方法がありますか?