2009-04-02 7 views
0

J'ai une table appelée DrTimings, dans laquelle le temps de Doctors pour chaque jour est la suivante.Sql Query Pour obtenir des données

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

J'ai une autre table appelée TimeList qui contient 3 champs

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

et se poursuit jusqu'à 19h00

J'ai une autre table DrDutyDetails dans lequel DrTiming est fixé pour le mois tout comme celui-ci .

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 

J'ai une autre table appelée AppointmentSchedule qui se remplit lorsque rendez-vous patient demande

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

i ont une forme de calendrier de rendez-vous dans lequel je sélectionne drid et rendez-vous fentes date.Then correspondant à la date qui n'a pas été dans Appointmentschedule, mais les slots devraient être entre starttime et endtime qui dans DrTimings et dans TimeSlots devraient être remplis dans une dropdownlist. J'ai besoin d'une requête pour l'implémenter. par exemple: Si le patient entre «4/5/2009» Ensuite, les emplacements autres que 1 et 3, mais biw DrTimings je veux obtenir.

De même, je veux rechercher par time.Means si le patient entre tout moment b/w DrTimings pour par exemple: 8: 30 AM,Then première date disponible doit être affiché dans textbox

+0

Comment l'agenda de rendez-vous est-il lié au drid? –

Répondre

0

Vous allez avoir besoin de regarder à faire du Casting/COnverting des valeurs de date. Ce MSDN article vous donne un peu d'information sur ce que vous devez travailler avec.

Il y a un certain nombre de façons de faire cela, mais idéalement, vous pouvez faire quelque chose comme CONVERT(VARCHAR(50), StartTime) pour obtenir le temps entièrement formaté. Puis, puisque vous savez que le format de fin est 08:00 AM, vous pouvez faire un RIGHT(CONVERT(VARCHAR(50), StartTime), 7), qui vous obtiendra juste la valeur de temps. Maintenant, avec cela vous savez comment manipuler la date en parties, vous pouvez d'ici faire les différentes choses nécessaires pour interroger vos articles. Par comparaison, je stockerais les données "TimeList" en tant que valeurs DateTime, de cette façon vous pouvez utiliser des comparaisons de temps standard pour vous permettre d'utiliser des fonctions telles que "Entre" et similaires. Vous pouvez les stocker comme 1/1/1900 08:00 AM ou similaire. Mais cela nécessiterait un changement de modèle de données. Si vous voulez un SQL utile pour ce genre de choses, voici un excellent article sur "Essential SQL Server Date, Time, and DateTime Functions".