Сравнение времени в SQL Server 2008 - PullRequest
3 голосов
/ 23 октября 2010

Вот мой стол.Мне нужен запрос, который возвращает идентификатор смены в течение указанного времени
Как я могу получить значение?

shift_ID   shift_From                shift_To
1          2010-09-21 10:00:00.000   2010-09-21 18:10:00.000
2          2010-09-21 20:00:00.000   2010-09-21 05:00:00.000

Предположим, что я даю 02:00:00 в качестве ввода Мне нужно получить идентификатор сменыкак 1. Как я могу это сделать?

1 Ответ

3 голосов
/ 23 октября 2010

Попробуйте:

SELECT shift_ID
FROM time_shift
WHERE
DATEDIFF(hour, shift_From, shift_To) = 2 -- your input

Подробнее о DATEDIFF на MSDN

Первый аргумент - это часть времени, которую вы указываете для DATETIFF (часы, минуты, секунды).

Если ваш ввод строго похож на 02:00:00, вам нужно проанализировать его, чтобы определить, что указать в качестве первого аргумента.

<ч />

Чтобы определить, принадлежит ли указанная дата двум другим, используйте:

SELECT shift_ID
FROM time_shift
WHERE
    CAST(shift_From AS TIME) < CAST(@input AS TIME)
AND
    CAST(@input AS TIME) < CAST(shift_To AS TIME)
-- you can specify operators inclusiveness, i.e. <= >= etc
-- or
CAST(@input AS TIME) BETWEEN (CAST(shift_From AS TIME), CAST(shift_To AS TIME))

Подробнее о ВРЕМЯ на MSDN

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