Вхождение дат в указанный диапазон #686483


#0 by Штурман
Допустим, есть таблица примерно следующего вида: Код    NameS    DateB            DateE 1    A    07.10.2013    26.10.2013 2    B    24.09.2013    16.10.2013 3    C    17.10.2013    02.11.2013 4    D    24.10.2013    30.10.2013 5    E    29.09.2013    17.10.2013 6    F    26.10.2013    08.11.2013 7    G    15.10.2013    31.10.2013 Нужно из нее вывести строки, входящие в указанный промежуток дат. К примеру, задаем промежуток с 01.10 по 15.10 (DateB и DateE соответственно). Тогда в результате должны вывеститься строки A, B, E и G. Как это реализовать в запросе?
#1 by Рэйв
... ГДЕ DateB Между &Нач и &Кон     Или DateE Между &Нач и &Кон
#2 by butterbean
Е не попадет
#3 by Рэйв
ну и для вхождения самого интервала ... Или &Нач<DateB и &Кон>DateE
#4 by Штурман
Написал: WHERE TableS.DateB between #10/1/2013# and #10/15/2013# or  TableS.DateE between #10/1/2013# and #10/15/2013#; Выводится только A и G
#5 by GenV
ГДЕ &Нач <= DateE И &Кон >= DateB
#6 by Рэйв
см еще
#7 by Рэйв
или смотря как надо
#8 by Штурман
это дополнить или вместо "Или DateE Между &Нач и &Кон" написать?
#9 by Рэйв
дополнить
#10 by Штурман
написал: WHERE TableS.DateB between #10/1/2013# and #10/15/2013# or  TableS.DateE between #10/1/2013# and #10/15/2013# Опять только A и G выводит
#11 by Штурман
Написал: вообще ничего не выводит
#12 by Ненавижу 1С
WHERE   TableS.DateB<=:EndDate and   TableS.DateE>=:BeginDate
#13 by Ненавижу 1С
перепутал ты, смотри
#14 by Штурман
написал: WHERE TableS.DateB<=#10/15/2013# and В принципе теперь правильно выводит. А запрос точный, если к большой таблице его применять, не вылезет ли в будущем лишние строки?
#15 by GenV
У меня по другому:
#16 by Штурман
Да, тоже работает, как в
#17 by ret-Phoenix
CREATE TABLE #test (NameS VARCHAR, dateB DATETIME, dateE DATETIME); SELECT * FROM #test WHERE '20131001' BETWEEN dateb AND datee or '20131015' BETWEEN dateb AND datee
#18 by GenV
Можно проверить на всех возможных вариантах вариантах и убедится: диапазон слева, диапазон справа, диапазон включает период, диапазон внутри периода, диапазон пересекает слева, диапазон пересекает справа
#19 by Штурман
Хорошо, всем спасибо :)
#20 by anaed
судя по достаточно просто ГДЕ DateB Между &Нач и &Кон
#21 by IBTM
почему не попадет? Вроде, первое же условие выполнится.
#22 by Штурман
Только A и G выведутся
#23 by IBTM
не, гоню тоже...
#24 by anaed
согласен, туплю под вечер)
#25 by МихаилМ
не забывайте, что по интервалу невозможно построить эффективный индекс. соответственно fullscan гарантирован и при количестве записей более 100 000 многопользовательская работа будет некомфортной
#26 by Штурман
не совсем понял, что вы имеете в виду?
#27 by МихаилМ
разжевывать простые вещи не буду может более подробно о проблеме в уже писал в
#28 by Штурман
посмотрим :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С