2010-08-09 3 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 (...) 

데이터베이스 플랫폼은 LinqToSql가 데이터베이스에 액세스하는 데 사용할 SQL 서버 2008입니다.

SQL Server 2008에는 많은 종류의 날짜/시간 형식과 함수가 있습니다. Start 및 MinutesBeforeAppointmentToSendReminder에 가장 적합한 형식은 무엇입니까? 가장 좋은 날짜 기능은 무엇입니까? [즉, "최고"성능과 편리함 이동성 고려]

답변

1

분만 해결해야하는 경우 smalldatetime not datetime을 사용하십시오.

차이점은, 당신에게 32K 분을 제공하는 smallint와 날짜/stime-type 도메인에서 계산을 유지하는 DATEADD를 제안하는 것입니다.

1

사용 DATEADD (날짜 시간, INT DateAdd 함수 계획되었다).

datetimes와 float 사이의 수를 변환하고 원시 날짜 값에 대해 수학을 수행하는 것보다 빠르고 읽기가 더 좋습니다.

응용 프로그램 관련 질문 - 미리 알림을 얼마나 멀리 보내고 있습니까? 4 시간이 한도 인 경우 int 또는 tinyints을 사용할 수 있습니다. 표준 날짜 시간은 시작 날짜에 충분할 수 있습니다. 시간대 지원이 필요하지 않는 한 datetimeoffset이 더 적절할 수 있습니다.

관련 문제