Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.09;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.013 c
2-1222707635
@!!ex
2008-09-29 21:00
2008.11.09
Менеджмент мониторов


2-1222670540
Iris
2008-09-29 10:42
2008.11.09
Пробелма записи в файл


2-1222762898
neon-w
2008-09-30 12:21
2008.11.09
NAN????


6-1194876467
Иван_А
2007-11-12 17:07
2008.11.09
Как вытащить номер сокета из clientaddr


15-1221302635
Riply
2008-09-13 14:43
2008.11.09
BSOD. Посмертный дамп