![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странная ситуация С 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 ?