Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Вниз

Select * where date BETWEEN date1 and date2 from БД ACCESS   Найти похожие ветки 

 
vegarulez ©   (2008-09-30 17:21) [0]

Собственно сабж...
Как правильно сделать?

делаю вот так... но что-то не наблюдирую нужного эффекта. :..(
Datamodule2.Zquery2.SQL.Text:="select * from `a` where (`c_date`  BETWEEN #30/09/2008# and #30/09/2008# )


 
Sten   (2008-09-30 17:23) [1]

СУБД?


 
vegarulez ©   (2008-09-30 17:23) [2]

ACCESS


 
Правильный$Вася   (2008-09-30 17:25) [3]

а что за странные обратные апострофы?


 
vegarulez ©   (2008-09-30 17:30) [4]

Правильный$Вася   (30.09.08 17:25) [3]

по существу плз


 
Правильный$Вася   (2008-09-30 17:33) [5]


> не наблюдирую

а какой эффект ты наблюдируешь?


 
vegarulez ©   (2008-09-30 17:39) [6]

Правильный$Вася   (30.09.08 17:33) [5]
ты пишешь только для того, чтобы писать?

наблюдирую что не выбирается ничего чистый список. не находит ничего в этом диапазоне. хотя записи есть... так понятнее какой эффект может при этом наблюдироваться?


 
stas ©   (2008-09-30 17:41) [7]

vegarulez ©   (30.09.08 17:39) [6]
В диапазоне с 30/09/2008 00:00:00  по 30/09/2008 00:00:00 есть записи?


 
vegarulez ©   (2008-09-30 17:42) [8]

stas ©   (30.09.08 17:41) [7]
есть.

ИМХО: правильнее наврено в диапазоне
30/09/2008 00:00:00  по 30/09/2008 23:59:59  


 
vegarulez ©   (2008-09-30 17:43) [9]

синтакисис селекта поля формата даты нужен для правильной выборки.
собственно в этом вопрос....


 
Правильный$Вася   (2008-09-30 17:46) [10]


> ты пишешь только для того, чтобы писать?

чтоб ты читал и думал, а не подпрыгивал

> ИМХО: правильнее наврено в диапазоне30/09/2008 00:00:00
>  по 30/09/2008 23:59:59  

у тебя не такой диапазон

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

так почему у тебя синтакисис не такой


 
vegarulez ©   (2008-09-30 17:48) [11]


> так почему у тебя синтакисис не такой

За этим сюда и пришёл - чтобы подсказали такой - какой будет правильнее при общении с этой бд.


 
Ega23 ©   (2008-09-30 17:49) [12]

Подозреваю, что у тебя попадут в запрос только те записи, где дата строго равна 30.09.2008. Т.е. ровно в полночь 30.09.2008.


 
vegarulez ©   (2008-09-30 17:50) [13]

Ega23 ©   (30.09.08 17:49) [12]

я тоже это подозреваю )
основная суть вопроса - как развеять эти подозрения? ))
плиз поделитесь синтаксисом...


 
sniknik ©   (2008-09-30 17:51) [14]

> ИМХО: правильнее наврено в диапазоне
не, правильнее в таком #30/09/2008# and #01/10/2008#
первое значение >= а второе <, т.е. так ты весь день захватываешь, а  в ткоем секунду теряешь. мелкая вероятность что попадется, но все же.


 
sniknik ©   (2008-09-30 17:52) [15]

> какой будет правильнее при общении с этой бд.
правильнее вообще то параметры.


 
Плохиш ©   (2008-09-30 17:52) [16]


> vegarulez ©   (30.09.08 17:42) [8]


> ИМХО: правильнее наврено в диапазоне

Создай свою субд и реализовывай в ней своё "ИМХО".


 
Правильный$Вася   (2008-09-30 17:53) [17]

еще правильнее использовать параметры и не компостировать мозги себе и серверу форматами непонятных данных


 
sniknik ©   (2008-09-30 17:54) [18]

> что у тебя попадут в запрос только те записи, где дата строго равна 30.09.2008.
не попадут ->
>= AND <
что не подставляй условие не верно.


 
vegarulez ©   (2008-09-30 17:58) [19]

Правильный$Вася   (30.09.08 17:53) [17]

типа asdate?


 
vegarulez ©   (2008-09-30 17:59) [20]

Плохиш ©   (30.09.08 17:52) [16]
vegarulez ©   (30.09.08 17:30) [4]


 
Ega23 ©   (2008-09-30 18:00) [21]


> не попадут ->
> >= AND <
> что не подставляй условие не верно.



create table tmp (UNID int);
insert into tmp (UNID) values (1);

Select * from tmp where UNID between 1 and 1

drop table tmp


выдаёт одну запись.
Впрочем, может в Access по-другому, тут я уже не в курсах...


 
vegarulez ©   (2008-09-30 18:00) [22]

vegarulez ©   (30.09.08 17:58) [19]
очибся...
вернее cast as date?


 
b z   (2008-09-30 18:00) [23]

http://office.microsoft.com/en-us/access/HP010322121033.aspx


 
vegarulez ©   (2008-09-30 18:05) [24]

b z   (30.09.08 18:00) [23]
синтаксиса датеатйма там не наблюдаю :(


 
b z   (2008-09-30 18:09) [25]


> синтаксиса датеатйма там не наблюдаю
Это еще в [15] можно было "наблюдировать". А мой пост для уточнения работы Between...And оператора.


 
clickmaker ©   (2008-09-30 18:10) [26]

Datamodule2.Zquery2.SQL.Text:="select * from `a` where (`c_date`  BETWEEN :Date1 and :Date2 )
Datamodule2.Zquery2.ParamByName("Date1").AsDateTime := Date1;
Datamodule2.Zquery2.ParamByName("Date2").AsDateTime := Date2;


 
Плохиш ©   (2008-09-30 18:14) [27]


> vegarulez ©   (30.09.08 17:59) [20]

Читай [7] пока не наступит просветление.


 
vegarulez ©   (2008-09-30 18:23) [28]

Плохиш ©   (30.09.08 18:14) [27]
да #ля... мне и так всё понятно... что их там 0
м\у 00:00:00 и 00:00:00
что тупить то???? я просто как пример привёл...

я прошу элементарно - написать синтаксис как правильно к ней обратится...
потому как #30/09/2008# and #01/10/2008# выдают все записи...
не надо воду на мельницу лить - если было что по существу пиши - нет нахрен мусорить в теме?

полазил в инете...
просто у пиндосов надо месяц сначала писать а потом дату...
заработало правильно при
#09/30/2008# and #10/01/2008#


 
Правильный$Вася   (2008-09-30 18:30) [29]


> просто у пиндосов надо месяц сначала писать а потом дату.

а ежики все так же лезли на кактус
несмотря на то, что рядом есть специальная бритва ака параметры


 
vegarulez ©   (2008-09-30 18:34) [30]

Правильный$Вася   (30.09.08 18:30) [29]
признаюсь чесна... не умею ими пользоваться...
пользовался ими кода писал ХП в IB... но это было давно и не правда...
подскажи как правильно при обращению к access`y их применить.

так, как посоветовал clickmaker ©   (30.09.08 18:10) [26]?


 
vegarulez ©   (2008-09-30 18:37) [31]

я в мускле делал вот так:

Datamodule2.ZQuery6.SQL.Text:="SELECT count(*) FROM `a` WHERE cast(`datetime` AS date) = curdate( )";

В access`e просто всё совсем по другому... поэтому туплю


 
Правильный$Вася   (2008-09-30 18:39) [32]


> так, как посоветовал clickmaker ©   (30.09.08 18:10) [26]?

да


 
vegarulez ©   (2008-09-30 18:44) [33]

ок - попробую - отпишусь если возникнут вопросы.


 
vegarulez ©   (2008-09-30 18:51) [34]

первый вопрос... (сразу приношу извинения если туплю)
формат :Date1 каков? Как обычно YYYY.MM.DD? Или в формате Access`a?
и почему перед ними : стоит?


 
Правильный$Вася   (2008-09-30 19:09) [35]


> формат :Date1 каков?

нет там формата, это НАЗВАНИЕ параметра

> и почему перед ними : стоит?

чтобы обозначить параметр

блин, справку читать мама не учила?


 
Anatoly Podgoretsky ©   (2008-09-30 19:31) [36]


> просто у пиндосов надо месяц сначала писать а потом дату.
> ..

А ты пиндос?


 
Anatoly Podgoretsky ©   (2008-09-30 19:31) [37]


> формат :Date1 каков? Как обычно YYYY.MM.DD? Или в формате
> Access`a?

А тип поля какой?


 
sniknik ©   (2008-09-30 19:42) [38]

> выдаёт одну запись.
> Впрочем, может в Access по-другому, тут я уже не в курсах...
действительно... получается >= AND <=
тогда я наврал с условием... правильнее было время на конец  дня ставить. ;(


 
Anatoly Podgoretsky ©   (2008-09-30 20:28) [39]

> sniknik  (30.09.2008 19:42:38)  [38]

Правильнее BETWEEN выкинуть и заменить на >= AND < + 1
Вот это работает без побочных эффектов той или другой СУБД и не теряет ни одной записи и также не добавляет лишних.
BETWEEN дает побочные эффекты для разных вариантов DataTime


 
Правильный$Вася   (2008-10-01 11:38) [40]


> действительно... получается >= AND <=

BETWEEN включает обе границы диапазона



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.006 c
6-1194920910
Net3
2007-11-13 05:28
2008.11.09
Научите, пожалуйста, скачивать файлы через прокси?


2-1222860218
renex
2008-10-01 15:23
2008.11.09
не передается динамический массив в функцию


15-1221573590
star
2008-09-16 17:59
2008.11.09
проблема с сетью


4-1199910118
=BuckLr=
2008-01-09 23:21
2008.11.09
Bidi mode средствами API


3-1209208049
hahol_64_rus
2008-04-26 15:07
2008.11.09
не могу создать тригер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский