OriginalGriff
То, что вам нужно, находится ближе к
SELECT ShiftName FROM tblShiftName WHERE '17:15' BETWEEN STime AND ETime
Но даже это не будет идеальным, или даже работать во всех случаях.
Проблема двоякая: во-первых, вы используете строки для хранения числовых значений, что означает, что все сравнения выполняются с использованием символьных проверок, поэтому результат всего сравнения зависит только от первой другой пары символов.
А во-вторых, ваши смены перекрывают полночь, поэтому ваше "время окончания" иногда раньше, чем ваше "время начала".
Лично я бы использовал числовое значение (возможно, "минуты с полуночи") и написал SP, который выполняет более сложную проверку, чем просто "Между", что примерно все, что вы можете сделать с текущей системой. Я бы посмотрел на текущее время и использовал его, чтобы решить, в какой день вы, скорее всего, будете, а затем проверить смену, а не "тупую" проверку.
[no name]
Просьба помочь этот запрос работает только в Ниже раз
С 08:30 до 16:30 и с 01:30 до 08:30
Но не работает с 16:30 до 00:30
Например
Мой ввод - '17:15', он не возвращает никаких строк, в чем проблема?
OriginalGriff
Цитата:
- А во-вторых, ваши смены перекрывают полночь, так что ваше "время окончания "иногда раньше, чем" время начала"."
Вот почему вам нужно быть намного более утонченным, чем "это между этим и этим".
OriginalGriff
Подумайте о данных, которые у вас есть, и о том, как бы вы сделали это вручную.
Вам дается определенное время. Как вы сами решаете, в какой смене он находится? На данный момент игнорируйте компьютеры.