私のアプリケーションには、イベントのカレンダーを格納するデータベースがあります。
id | name | date
----+--------------------+--------------------
1 | Birthday Party | 2013-04-27 16:30:00
2 | Dinner Reservation | 2013-03-20 17:00:00
3 | Sunday Brunch | 2013-03-31 11:15:00
アプリケーションでイベントを表示する場合、ユーザーは、データベースに値として保存されている、イベントを表示したい現在の瞬間からどれだけ前に設定できる必要があります。
username | datediff
----------+------------------------------------------
user123 | 2 days in advance
goodguy | 93 days in advance
spudly | 365 days in advance
aaaaaa | 17 days, 3 hours, 30 seconds in advance
私の質問は、そのような日付の差を保存するための最良の(つまり、SQLの慣用的な)方法は何ですか?時間差をミリ秒単位の数値として格納できますが、特定の時点だけでなく、日付の差に適した組み込みのSQLデータ型はありますか?このタスクには、DATETIMEやTIMESTAMPのようなものが適切ですか?
これは相対的な違いである必要があります。たとえば、「2日前」の場合、ユーザーに次の2日間のイベントを毎回表示してもらいたいので、2日後の特定の日付を保存することに興味はありません。彼がアプリケーションを見るとき。
違いがあれば、Microsoft SQLServer2008を使用しています。
(これは重複している可能性がありますが、私の検索の試みはすべて、時間差の計算datediff
に使用される-についての結果を示していますが、時間差を保存するための最良の方法については何もありません。)