![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по выборке с датами MSSQL
kserg@ukr.net © (2002-05-13 19:31:00)в таблице есть поле dat1 - тип SmallDateTime
dat1
06.05.02
11.05.02
12.05.02
12.05.02 08:00:00
13.05.02
Мне надо выбрать все даты с 6 по 12 мая
След.запрос выбирает всё, кроме 12.05.02 08:00:00
SELECT * FROM Table WHERE dat1 BETWEEN "06.05.02" AND "12.05.02"
!!НО - меняю на
SELECT * FROM Table WHERE dat1 BETWEEN "06.05.02" AND "13.05.02"
запись 12.05.02 08:00:00 выбирается тоже,
и вместе с этим выбирается и 13-е число.
Так понимаю, что всю малину портят часы:минуты.
Как объехать?
Delirium (2002-05-13 19:56:00) [21]Я делаю так:
select * from dDate between "20020502" and "20020502 23:59:59"
kserg@ukr.net (2002-05-13 19:50:00) [22]Вот в ходе обсуждения хочу уточнить вопрос:
как в запросе работать только с "чистой" датой?
т.е. откинуть составляющую времени
kserg@ukr.net (2002-05-13 19:47:00) [23]>icu (13.05.02 19:36)
Уважаемый, если правильно понял, вы предлагаете реализацию запроса из ДЕЛФей.
Я всегда отрабатываю запросы в SQLServer Manager.
Там и заметил столь странный для меня рез-т.
Попробовал тупо
...WHERE Dat1 BETWEEN CAST("06.05.02" AS smalldatetime)
AND CAST("12.05.02" AS smalldatetime)
рез-т тотже - запись 12.05.02 08:00:00 не выбирается.
icu (2002-05-13 19:36:00) [24]SELECT * FROM Table WHERE dat1 <= :dateto AND dat1 >= :datefrom
что-то типа этого. Дата - это простой Double. То есть число дней прошедших с 12/30/1899. Вот и все. А сейчас ты с ней как со строкой работаешь.