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

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

Дата/ДатаВремя в SQL запросах БД Access [D7, Access]


Страницы:   1 2

Dmitry_177 ©   (2008-05-27 15:44:00) 

как правильно задавать Дату и ДатуВремя в SQL запросах в Access? К БД подключаюсь при помощи ADO.. Не понятно мне вот что: При добавлении новой записи в таблицу, я делаю так:

Дата:

INSERT INTO table (t_date)
         VALUE ('27.10.2008')


ДатаВремя:

INSERT INTO table (t_datetime)
         VALUE ('27.10.2008 21:30:00')


Вобщем формат Даты и ДатыВремени такой.. И все работает..

А вот если нужно сравнить дату, например:

SELECT *
FROM table
WHERE table.t_datetime = '27.10.2008 21:30:00'


то уже возникает ошибка..


Anatoly Podgoretsky   (2008-05-29 16:50:00) [1]

> Dmitry_177  (28.05.2008 11:40:17)  [17]

Это не дает гарантии, что в условие попадут все записи за 27,10,2008 более того в текстовом виде вообще возможны разные сюрпризы.


Palladin   (2008-05-29 07:58:00) [2]

правильней (относительно) будет

q.SQL.Text:='insert into table (t_datetime) values (:PDateTime)';
q.Parameters.ParamByName('PDateTime').Value:=Date;
q.ExecSQL;


ну или то, что предложит sniknik :), но с тем же подходом с параметром...


Dmitry_177   (2008-05-28 23:59:00) [3]

А при добавлении записи:

INSERT INTO table (t_datetime)
        VALUE ('27.10.2008 21:30:00')


правильней будет тоже месяц/день/год ?


DiamondShark   (2008-05-28 14:19:00) [4]


> т.е. так:
> SELECT * FROM table
> WHERE t_datetime BETWEEN #27/10/2008 00:00:00# AND #27/10/2008
> 23:59:59#

Лучше так:
WHERE t_datetime >= #27/10/2008 00:00:00# AND t_datetime < #28/10/2008 00:00:00#


Dmitry_177   (2008-05-28 11:40:00) [5]

т.е. так:
SELECT * FROM table
WHERE t_datetime BETWEEN #27/10/2008 00:00:00# AND #27/10/2008 23:59:59#


?


Dmitry_177   (2008-05-28 11:39:00) [6]

SELECT * FROM table
WHERE t_datetime BETWEEN (#27/10/2008 00:00:00#, #27/10/2008 23:59:59#)


?


Правильный_Вася   (2008-05-28 11:32:00) [7]

BETWEEN


Dmitry_177   (2008-05-28 11:14:00) [8]

Еще вопрос.. А как сравнить ДатаВремя с Датой?

т.е. есть:

ДатаВремя - 27.10.2008 21:30:00
и Дата - 27.10.2008

вот нужно сравнить только дату, попробовал сделать так:

SELECT * FROM table
WHERE t_datetime = #27/10/2008#


не сравнивается.. помогите


Правильный_Вася   (2008-05-27 22:21:00) [9]

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


Anatoly Podgoretsky   (2008-05-27 21:44:00) [10]

Пусть сначала моральный ущерб оплатит.


palva   (2008-05-27 18:27:00) [11]


> Access запишет ее как 12 октября или 10 декабря?

Вы хотите, чтобы мы для вас попробовали?


Dmitry_177   (2008-05-27 17:05:00) [12]

хм.. тут наверно может быть тогда ошибка..(((

вот к примеру наша дата 27.10.2008.. 27-го меся не бывает, поэтому меняет местами и все ок.. а будет такая 12.10.2008 дата? Access запишет ее как 12 октября или 10 декабря?


Anatoly Podgoretsky   (2008-05-27 16:52:00) [13]

> palva  (27.05.2008 16:48:08)  [8]

Когда меняет не страшно, страшно когда не меняет и ничего не говорит.


palva   (2008-05-27 16:48:00) [14]

По правилам нужно так #месяц/день/год#
Если Access обнаруживает, что дата невалидная он пробует поменять местами месяц и день.


MsGuns   (2008-05-27 16:40:00) [15]

>Dmitry_177   (27.05.08 16:19) [5]
>где-то накопал в интернете что нужно так: месяц/день/год хотя работает как я написал.. непонятно что-то..

Так не нужно.


Anatoly Podgoretsky   (2008-05-27 16:23:00) [16]

> MsGuns  (27.05.2008 16:07:04)  [4]

А в Акцесс хранится именно в этом формате, совпадает с TDateTime


Dmitry_177   (2008-05-27 16:19:00) [17]


> #27.10.2008 21:30:00# помоему так...


почти ))

#27/10/2008#

только не понятно еще, где-то накопал в интернете что нужно так: месяц/день/год хотя работает как я написал.. непонятно что-то..


MsGuns   (2008-05-27 16:07:00) [18]

>Anatoly Podgoretsky ©   (27.05.08 15:58) [3]
>Бесполезно сравнивать числа с плавающей запятой на абсолютную точность.

А причем здесь "числа с плавающей запятой" ?


Anatoly Podgoretsky   (2008-05-27 15:58:00) [19]

> MsGuns  (27.05.2008 15:55:02)  [2]

Бесполезно сравнивать числа с плавающей запятой на абсолютную точность.


MsGuns   (2008-05-27 15:55:00) [20]

Использовать параметрические запросы


Страницы:   1 2

Наверх

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