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

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

Странная ситуация С ADO запросом


Alex_x ©   (2003-10-22 10:35:00) 

База аксес запрсом отбираю за перидод по дате. ...Data>#12/05/03# and Data<=#21/10/03#.... количество отобраних записей 0 (хотя они есть за этот период). когда первую дату пишу на день раньше типа #11/05/03# то всё нормально


Vitaly   (2003-10-22 14:52:00) [1]

...Data> =#12/05/03# and Data<=#21/10/03#....


Anatoly Podgoretsky   (2003-10-22 14:39:00) [2]

Это означает, что при работе с литералами, тем более в ткой форме всегда будет существовать неодназначность, надои или параметы или системнонезависимый формат


Anatoly Podgoretsky   (2003-10-22 14:38:00) [3]

sniknik © (22.10.03 12:45) [10]
Системно независимый формат, а вот #10/01/03# как минимум есть неодназначность с 03, это какой год 1903, 1803?


Семен Сорокин   (2003-10-22 14:28:00) [4]

Alex_x © (22.10.03 14:00) [14]
qr.Sql.Add("select * from table1 where [data]>:data1 and [data]<=:data2");
qr.Parameters.ParamByName("data1").Value := DateTimePicker1.DateTime;
qr.Parameters.ParamByName("data2").Value := DateTimePicker2.DateTime;
qr.Open;


Alex_x   (2003-10-22 14:00:00) [5]

я не работал с параметрами, я так понимаю если есть два параметра которым присваивается дата, то уже она будет в правильном формате?????


Ломброзо   (2003-10-22 13:49:00) [6]

Семен Сорокин © категорически прав, при работе с датами с любой СУБД настоятельно рекомендуется использовать параметры, а не форматировать их в тело запроса.


Val   (2003-10-22 12:56:00) [7]

>sniknik © (22.10.03 12:45) [10]
я о промежутке не говорил(там between без разговоров :)) - только о возможности приведения к нужному формату, понятно, что используя форматирование, операции будут происходить несколько дольше, зато нет путаницы.


sniknik   (2003-10-22 12:53:00) [8]

bushmen © (22.10.03 12:36) [8]
не заметил твоего поста. запись выше однозначна но не совсем если операция не с датой то это будет просто строка.

повбывал бы, кто это все придумал. %о)))

есть еще функции, DateSerial(2003, 12, 10) к примеру, задает параметры более менее однозначно , но если к примеру задать дней больше чем в месяце то тоже ошибки не будет просто добавит месяц.
и т.д. ...
;о)))


sniknik   (2003-10-22 12:45:00) [9]

Val © (22.10.03 12:40) [9]
ну это ты к тексту привел, а с текстом опереции дольше, и промежуток выберет неправильно (ну надо думать чтобы правильно было)

мне больше нравится такая запись
... date between "20031020" and "20031023" ...
все однознсчно.


Val   (2003-10-22 12:40:00) [10]

>sniknik © (22.10.03 12:33) [6]
а нельзя разве указывать формат, например:
select * from doctable where format(docdate,"dd.mm.yyyy") = "01.06.2003" ?


bushmen   (2003-10-22 12:36:00) [11]

А в Access"e нет конветрера с форматом, чтобы однозначно задавать формат даты?


sniknik   (2003-10-22 12:35:00) [12]

да если год поставить
select #13/05/2003#
то
13.05.2003
(везде по разному :о((()


sniknik   (2003-10-22 12:33:00) [13]

вообше он понимает любой формат, сам решает как интерпретировать (что мне и не нравится).
но не всегда, в случае если одну дату в выражении задать в одном другую в другом, решит скорее всего неправильно (но ошибки не даст).

ну вот например, у меня
select #12/05/03#
дает дату 05.12.2003
а вот
select #13/05/03#
03.05.2013
что называется найдите отличия. ;о)


Семен Сорокин   (2003-10-22 12:28:00) [14]

2Alex_x
1. используй параметры
2. проверь нет ли "времени" в поле


Alex_x   (2003-10-22 12:25:00) [15]

тоесть он использует американский формат даты ММ/ДД/УУ?

я гдето читал что есть разница при создании базы какие региональние стандарты стояли на компе. например "Русские" и если потом работать с этой базой на компе где стоят региональние стандарты другие то будут глюки?


sniknik   (2003-10-22 12:17:00) [16]

попробуй напиши так
... Data between #05/12/03# and #10/21/03# ....
(месяц/день/год)

у тебя судя по #21/10/03# день первый, акцесс во многих случаях так понимает, но лутше не злоупотреблять
(по мне так лутше бы в одном случае давали бы явную ошибку и не было бы путаници, но как зделано так сделано).


Johnmen   (2003-10-22 11:18:00) [17]

>(хотя они есть за этот период)

На дату 12/05/03 ? :)


bushmen   (2003-10-22 11:12:00) [18]

А у тебя все записи датированы случайно не 12/05/03 ?


Наверх

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