2010-08-09 44 views
2

我希望能够发送约会提醒。鉴于表:在SQL Server 2008中实现(日期 - 时间差)

- Appointment 
    ID (PK) 
    Start 

- Reminder 
    AppointmentID (FK) 
    MinutesBeforeAppointmentToSendReminder -- only need minute resolution 

我想选择提醒时间:

select ..., DateAdd(minutes, -Reminder.MinutesBeforeAppointmentToSendReminder, Appointment.Start) as ReminderTime 
from Appointment join Reminder 
    on (Appointment.ID = Reminder.AppointmentID) 
where (...) 

的数据库平台SQL是Server 2008的LinqToSql将被用来访问数据库。

SQL Server 2008中有大量的日期/时间类型和函数。什么是Start和MinutesBeforeAppointmentToSendReminder的最佳类型。什么是最好的日期功能使用? [即 “最佳” 考虑到性能,便利性和便携]

(正计划日期时间,整型,DATEADD)

回答

1

如果您只需要解决分钟问题,那么请使用smalldatetime而不是datetime。

为了区别,我建议smallint给你32k分钟和DATEADD,它保留日期/ stime-类型域中的计算

1

使用DATEADD。

它比日期时间和浮点数之间的数字转换以及对原始日期值进行数学运算更快,更好。

您的应用程序问题 - 您提前多久发送提醒?如果4小时是您的限制,您可以使用整数或tinyints。标准日期时间可能足够您的开始日期;除非你需要时区支持,在这种情况下datetimeoffset可能更合适。

相关问题