在我的应用程序中,我有一个存储事件日历的数据库:
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 天”,我对存储未来两天的特定日期不感兴趣,因为我希望用户每隔一天查看接下来两天的事件他查看应用程序的时间。
我正在使用 Microsoft SQL Server 2008,如果它有什么不同的话。
(这可能是重复的,但我所有的搜索尝试都出现了关于datediff
——用于计算时差——但没有关于如何最好地存储时差的结果。)