2010-08-09 46 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可能更合適。

相關問題