2009-04-02 4 views
0

나는 DrTimings이라는 테이블을 가지고 있는데, 의사 시간은 매일입니다.Sql 쿼리 데이터를 얻으려면

DrID(int identity) StartTime(DateTime)    EndTime(DateTime) 
    1    3/31/2009 8:00:00 AM 3/31/2009 10:30:00 AM 

나는 3 개 필드

SlotID SlotStartTime(varchar) SlotEndTime(varchar) 
1   8:00AM      8:15AM 
2   8:15AM      8:30AM 
3   8:30AM      8:45AM 

를 포함하고 내가 DrTiming 이렇게 한달 내내 설정되어있는 다른 테이블 DrDutyDetails이 오후 7시

까지 계속 TimeList라는 다른 테이블이 .

DrID StartTime    EndTime    DateOfAllocation 
1  4/5/2009 8:00:00 AM 4/5/2009 9:30:00 AM 4/5/2009 12:00:00 AM 
2  4/12/2009 8:00:00 AM 4/12/2009 9:30:00 AM 4/12/2009 12:00:00 AM 
likewise 

나는 환자의 요청 약속

AppointmentID SlotID AppointmentDate 
1    1  4/5/2009 
2    3  4/12/2009 

은 내가하지 않은 그 날짜에 해당하는 DrID과 약속 date.Then 슬롯을 선택하는 약속 일정 양식이있을 때 채워집니다 AppointmentSchedule라는 다른 테이블이 약속 스케줄에 있었지만 슬롯은 DrTimings과 TimeSlots에서 드롭 다운 목록에 채워 져야하는 시작 시간과 종료 시간 사이에 있어야합니다.이 기능을 구현하려면 쿼리가 필요합니다. 예 : 환자가 '4/5/2009'를 입력 한 경우 1과 3 이외의 슬롯이지만 DrTimings를 바이어스하고 싶습니다. 8 : 환자는 예에 대한 DrTimings B/W 모든 시간을 입력하면

마찬가지로 내가 time.Means에 의해 검색 할 30 AM,Then 가능한 첫 번째 날짜가 텍스트 상자에 표시 할 수있다 당신은 볼 필요가가는

+0

약속 스케줄을 drid에 어떻게 연결합니까? –

답변

0

날짜 값의 일부 형변 변환을 할 때. 이 MSDN article은 작업해야하는 것에 대한 약간의 정보를 제공합니다.

이렇게 할 수있는 방법은 여러 가지가 있지만, 이상적으로는 완전히 형식화 된 시간을 얻으려면 CONVERT(VARCHAR(50), StartTime)과 같은 것을 할 수 있습니다. 그런 다음 종료 형식이 오전 8 시인 것으로 알고 있으므로 RIGHT(CONVERT(VARCHAR(50), StartTime), 7)을 수행하면 시간 값을 얻을 수 있습니다.

이제는 날짜를 부분으로 조작하는 방법을 알고 있으므로 여기서 항목을 쿼리하는 데 필요한 다양한 작업을 수행 할 수 있습니다.

비교를 위해 "TimeList"데이터를 DateTime 값으로 저장하므로 표준 시간 비교를 사용하여 실제로 "사이"와 같은 함수를 사용할 수 있습니다. 1900 년 1 월 1 일 오전 8시 또는 이와 비슷한 형태로 저장할 수 있습니다. 그러나 이렇게하려면 데이터 모델 변경이 필요합니다. 이런 유형의 SQL에 도움이되는 SQL을 원한다면 "Essential SQL Server Date, Time, and DateTime Functions"이라는 훌륭한 기사가 있습니다.