それはさまざまな側面に依存します。標準の「エポックからの秒数」を使用し、誰かが整数精度のみを使用する場合、日付は 1970 年から 2038 年の範囲に制限されます。
しかし、精度の問題もあります。たとえば、UNIX 時間はうるう秒を無視します。毎日同じ秒数を持つように定義されています。そのため、UNIX 時間間の時間差を計算すると、エラーが発生します。
しかし、より重要なことは、すべての日付が完全にわかっていると仮定することです。これは、指定された日付の半分だけを表現する可能性がないためです。実際には、1 秒 (またはミリ秒) の精度ではわからないイベントがたくさんあります。したがって、表現が指定できる場合、たとえば日付の精度のみを指定できるのは機能です。理想的には、日付を精度情報とともに保存します。
さらに、カレンダー アプリケーションを構築しているとします。時間はありますが、現地時間もあります。多くの場合、両方の情報が必要になります。スケジュールが重複する場合は、もちろん、同期された時間でこれを最大限に実行できるため、ここでは long が適しています。ただし、現地時間の 9 ~ 20 時間外にイベントをスケジュールしないようにしたい場合は、タイムゾーン情報も常に保持する必要があります。複数の場所にまたがる場合は、日付表現にタイムゾーンを含める必要があります。表示されているすべての日付を現在の現地時間に変換できると仮定するのは、非常に単純です。
SQL の日付は奇妙な状況につながる可能性があることに注意してください。私のお気に入りの 1 つは、次のMySQL の不条理です。
SELECT * FROM Dates WHERE date IS NULL AND date IS NOT NULL;
はdate を持つレコードを返す場合0000-00-00 00:00:00
がありますが、これは一般的なロジックの理解に反しています。