Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Всё тот же SQL [D6, Paradox]


Sheng ©   (2003-08-25 19:24:00) 

Суть вот в чём: есть БД, в ней ключевые два поля - Дата и Время.
Как правильно составить SQL-запрос на выборку от такого-то дня столько то времени до другого дня другого времени. Пробовал SELECT .... (SELECT ....) .... - не работает.


Dred2k   (2003-08-26 16:33:00) [1]

> stud © (26.08.03 15:38) [10]

Значит, хорошие тестовые данные придумал.
> от такого-то дня столько то времени до другого дня другого
> времени

А твой вариант отсечет все записи типа (Date1 > DateF < Date2), у которых время не попадет в интервал. Это неверно.


stud   (2003-08-26 15:38:00) [2]


> Dred2k

специально проверил)) результат одинаковый.


Dred2k   (2003-08-26 14:50:00) [3]

> stud © (26.08.03 10:28) [8]

Время нужно проверять только в пограничных значениях.
Иначе неправильно будет.

> Sheng © (26.08.03 10:13) [7]
> Так как всё-таки правильно написать и что правильно работать будет????

А проверить слабо? Или лень обуяла?


stud   (2003-08-26 10:28:00) [4]

(DateF between :Date1 and :Date2)
and
(TimeF between :Time1 and :Time2)
еще меньше скобок))


Sheng   (2003-08-26 10:13:00) [5]


> Fay (25.08.03 20:16) [5]

Тут я, тут.

> to ALL

Так как всё-таки правильно написать и что правильно работать будет????


Dred2k   (2003-08-25 20:49:00) [6]

(DateF between :Date1 and :Date2)
and
((DateF <> :Date1) or (TimeF >= :Time1))
and
((DateF <> :Date2) or (TimeF <= :Time2))

Вроде, скобок немного ;)


Fay   (2003-08-25 20:16:00) [7]

2 Dens
>> Может, конечно скобок и много, но зато понятно
Их не многовато - они там вАщЕ не нужны.
Хотя, кому-то, быть может, так понятнее. Быть может.

2 Sheng
Ты где? Ку-ку!


Dens   (2003-08-25 20:00:00) [8]

Fay (25.08.03 19:38) [2]

1) Может, конечно скобок и много, но зато понятно.
2) Согласен. Дал не верный пример.
В случае 12:00:00 отберет все записи, у которых время,
будет в промежутке от 00:00:00 до 12:00:00, не зависимо от даты.


Fay   (2003-08-25 19:40:00) [9]

2 Sheng
В рагадохе при можно складывать дату с временем?
Если да, то если результатом сложения будет дата_время, то
сравнивай суммы даты.


Fay   (2003-08-25 19:38:00) [10]

2 Dens
1) Так писать нормально? i := ((2*3)*(4*5));
2) В случае 12:00:00 вместо 23:59:59 что будет?


Dens   (2003-08-25 19:32:00) [11]

Sheng © (25.08.03 19:24)

Если не ошибаюсь, то так:

SELECT * FROM <TABLE>
WHERE ((ADATE>="01.01.2003") AND (ATIME>="00:00:00")) AND
((ADATE<="31.01.2003") AND (ATIME<="23:59:59"))


Наверх

Титульная страница Поиск, карта сайта Написать письмо