Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2011, 18:32   #1
Ks2010
Пользователь
 
Регистрация: 08.07.2010
Сообщений: 62
По умолчанию сравнение с текущей датой

подскажите, пожалста что неправильно делаю!!!

вот такой запрос не отрабатывает
Код:
 select * from my_table where my_date = Date()
пишет, что 'Date' is not a recognized built-in function name.

my_date с data type 'datetime' - сюда из delphi записывается дата с помощью ADOQuery
Код:
ADOQuery1.SQL.Text:='insert into my_table (my_Date) VALUES (Convert(datetime, :DT1 ,102))';
AdoQuery1.Parameters.ParamByName('DT1').Value:=DateTimePicker1.DateTime;
дата в таблице 'my_table' выглядит вседующим образом 08.02.2011 16:25:33

мне надо сравнить с текущей датой!!!
Ks2010 вне форума Ответить с цитированием
Старый 08.02.2011, 20:34   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вы хоть сообщите к какой базе или SQL-серверу обращаетесь, подобные функции имеют различные имена у них
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.02.2011, 20:52   #3
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Код:
select * from my_table where (my_date >= :CurDate1 AND my_date < CurDate2)

ADOQuery1.ParamByName('CurDate1').AsDateTime := Today;
ADOQuery1.ParamByName('CurDate2').AsDateTime := Today + 1;
ADOQuery1.Open;
_Engine_ вне форума Ответить с цитированием
Старый 08.02.2011, 21:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

_Engine_, 1) Вы допустили ошибку в запросе (пропущено двоеточие)
2) зачем дёргать запрос с параметрами, если получение системной даты и так есть в сервере.

Ks2010,
Присоединяюсь к мнению Аватар — нужно знать, о какой конкретно СУБД идёт речь: MySQL, MS SQL, Firebird, Oracle....
и "юзать" конкретную функцию данной СУБД.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.02.2011, 15:25   #5
Ks2010
Пользователь
 
Регистрация: 08.07.2010
Сообщений: 62
По умолчанию

база - MS SQL

вот я и не знаю какую функцию использовать...
Ks2010 вне форума Ответить с цитированием
Старый 09.02.2011, 15:32   #6
Ks2010
Пользователь
 
Регистрация: 08.07.2010
Сообщений: 62
По умолчанию

_Engine_, у меня Delphi ругается на AsDateTime (parameter)

что мне где надо дописать??
Ks2010 вне форума Ответить с цитированием
Старый 09.02.2011, 15:47   #7
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Код:
select * from my_table where my_date = getdate()
эквивалент
Код:
select * from my_table where my_date = CURRENT_TIMESTAMP
и вообще...
Справка по датам в Trasnsact-SQL
©Учиться, учиться и еще раз учиться!

Последний раз редактировалось quit; 09.02.2011 в 15:52.
quit вне форума Ответить с цитированием
Старый 09.02.2011, 15:56   #8
Ks2010
Пользователь
 
Регистрация: 08.07.2010
Сообщений: 62
По умолчанию

quit, я пробовала так...
но у меня запрос ничего не возвращает (ни первый, ни второй), хотя в одной строке есть сегодняшняя дата - "09.02.2011 16:25:33" (как я уже писала data type - 'datetime')
Ks2010 вне форума Ответить с цитированием
Старый 09.02.2011, 16:01   #9
Ks2010
Пользователь
 
Регистрация: 08.07.2010
Сообщений: 62
По умолчанию

сделала так

Код:
...
ADOQuery3.SQL.Text:='select * from task_to_job where (Date_end >= :CurDate1 AND Date_end < :CurDate2)';  
ADOQuery3.Parameters.ParamByName('CurDate1').Value := Today;
ADOQuery3.Parameters.ParamByName('CurDate2').Value := Today + 1;
...
правильно работает!!!
Спасибо!!!!
Ks2010 вне форума Ответить с цитированием
Старый 09.02.2011, 16:02   #10
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Ну, если ее сравнивать с точностью до секунды, то разумеется ничего не будет, дата же будет отличаться. Приведи ее к формату dd.mm.yyyy и тогда сравнивай.
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос с текущей датой ГОСЕАН Помощь студентам 1 13.01.2011 13:05
Работа с датой EugeneIsmatulin Общие вопросы Delphi 8 16.06.2009 13:24
Работа с датой Aleksandr Общие вопросы Delphi 12 29.09.2008 14:01
Создать папку с текущей датой Dorvir Microsoft Office Excel 1 16.07.2008 10:10
Несовпадение с датой RoZi Помощь студентам 26 28.11.2007 13:05