2013-08-29 3 views
-1

У меня две даты, От даты и До даты.как выбрать, используя предложение where?

Также у меня есть два временных поля, От времени и To Time.

Поле даты в базе данных - Datetime. Мне нужно выбрать данные по дате и времени.

Это мой запрос для выбора данных между 13:00 до 15:00, но он не подходит для 20:00 до 08:00.

where Date>= '2/01/2012' AND Date<'2/28/2013' 
    AND CAST(Date AS TIME) BETWEEN '20:00' AND '08:00' 
+1

Вам придется придумать с двумя значениями даты и времени, чтобы сделать получить логическое право , Для этого вам, вероятно, придется сначала преобразовать ваши значения даты и времени в строки, а затем передать строки в datetime. Кто-то умнее меня может знать, как это сделать прямо. –

+0

Вы хотите только вернуть строки, где интервал ввода полностью находится в интервале строк? Или также частично – Hazaart

+0

Пожалуйста, уточните мой обновленный ответ – htxryan

ответ

2

не видя конкретных ошибок/неожиданные результаты, я думаю, что проблема в том, что 20 больше, чем 8.

Вы должны будете использовать два условия:

where Date>= '2/01/2012' AND Date<'2/28/2013' AND (CAST(Date AS TIME) > '20:00' OR CAST(Date AS TIME) < '08:00') 

EDIT: фиксированный условие

+2

'CAST (Date AS TIME)> '20: 00 'AND CAST (Date AS TIME) <'08: 00'' всегда будет false. – TToni

+0

@TToni Правильно! Обновленный ответ. – htxryan

2

это то, что вы после этого?

WHERE Date BETWEEN '2012-01-01 20:00:00.000' AND '2012-12-01 08:00:00.000' 

Немного неясно, пытаетесь ли вы динамически генерировать переменные предложения WHERE?

+0

Это должен был быть комментарий к исходному вопросу dude :) – gvee

+0

да мне нужен этот тип фильтрации –

+0

В этом случае это разрешено или вам нужно больше информации? – Yonabart

0

Вам необходимо объединить детали «дата» и «время».

Этот код будет показано, как это сделать:

SELECT the_date 
    , the_time 
    , DateAdd(hh, DatePart(hh, the_time), the_date) As hour_added 
    , DateAdd(mi, DatePart(mi, the_time), the_date) As minute_added 
    , DateAdd(mi, DatePart(mi, the_time), DateAdd(hh, DatePart(hh, the_time), the_date)) As both_added 
FROM (
     SELECT Cast('2013-02-28' As datetime) As the_date 
      , Cast('08:30' As datetime) As the_time 
     ) As example 

Вы можете использовать результирующие значения в вашем сравнении

Смежные вопросы