Sql Query Для получения данных - PullRequest
0 голосов
/ 02 апреля 2009

У меня есть таблица под названием DrTimings, в которой время врачей для каждого дня такое.

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

У меня есть еще одна таблица под названием TimeList, которая содержит 3 поля

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

и продолжается до 7:00 вечера

У меня есть другая таблица DrDutyDetails, в которой DrTiming установлен на целый месяц, как этот.

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

У меня есть еще одна таблица под названием AppointmentSchedule, которая заполняется, когда пациент запрашивает назначение

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

У меня есть форма расписания встреч, в которой я выбираю DrID и дату встречи. Затем слоты, соответствующие дате, которой не было в Appointmentschedule, но слоты должны находиться между временем начала и окончания, которые в DrTimings и TimeSlots должны заполняться dropdownlist. Мне нужен запрос для реализации этого. например: если пациент вводит «5/5/2009», то слоты, кроме 1 и 3, но я хочу получить DrTimings.

Точно так же я хочу выполнить поиск по времени. Имеет в виду, что пациент вводит любое время ч / б DrTimings, например, в 8:30, затем в текстовом поле должна отображаться первая доступная дата

1 Ответ

0 голосов
/ 02 апреля 2009

Вам понадобится посмотреть на приведение / преобразование значений даты. Эта статья MSDN дает вам немного информации о том, с чем вам нужно работать.

Есть несколько способов сделать это, но в идеале вы можете сделать что-то вроде CONVERT(VARCHAR(50), StartTime), чтобы получить полностью отформатированное время. Затем, поскольку вы знаете, что конечным форматом является 08:00, вы можете сделать RIGHT(CONVERT(VARCHAR(50), StartTime), 7), который даст вам только значение времени.

Теперь, когда вы знаете, как манипулировать датой по частям, вы можете отсюда делать различные вещи, необходимые для запроса ваших предметов.

Для сравнения я буду хранить данные "TimeList" в качестве значений DateTime, чтобы вы могли использовать стандартные сравнения времени, чтобы фактически позволить вам использовать такие функции, как "Между" и аналогичные. Вы можете хранить их как 01.01.1900 08:00 или аналогичные. Но это потребует изменения модели данных. Если вам нужен полезный SQL для такого рода вещей, вот отличная статья на тему « Основные функции SQL Server Date, Time и DateTime ».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...