Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.02.2008, 10:41
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Вопрос Находжение разницы годов в SQL запросе

Здравствуйте! Подскажите пожалуйста.
Задача: Посчитать кол-во записей в БД (Paradox), где все мужчины старше 60 лет.
SQL-запрос такой:
begin
Код:
view plaincopy to clipboardprint?

mQ.Close;
mQ.SQL.Clear;
mQ.SQL.Add('SELECT COUNT(*) FROM Base.db WHERE (SEX LIKE "Мужской") AND (...[подсчет разницы в годах между двумя датами]...)');
mQ.Open;
Одна дата берется из базы (поле BIRTHDAY), вторая - текущая дата.
Как мне это реализовать в запросе??? (ну никак не придумаю)

P.S. Наиболее оптимальный вариант с фун-ей YearsBetween!!!
Но нак её в запрос впихнуть ?????
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #2  
Старый 26.02.2008, 09:33
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Вопрос решен!!! Альтернативным вариантом.
Но если идеи будут - пишите!
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #3  
Старый 26.02.2008, 13:01
Unocide Unocide вне форума
Прохожий
 
Регистрация: 23.11.2005
Сообщения: 16
Репутация: 10
По умолчанию

DATEDIFF(year,DataRojd,Getdate())
Ответить с цитированием
  #4  
Старый 26.02.2008, 15:03
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Восклицание

Цитата:
Сообщение от Unocide
DATEDIFF(year,DataRojd,Getdate())

Не катит!!!
Если можно, покажи на примере
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #5  
Старый 26.02.2008, 16:31
trenger trenger вне форума
Прохожий
 
Регистрация: 21.01.2008
Сообщения: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Unocide
DATEDIFF(year,DataRojd,Getdate())
только вместо year нужно yyyy
Ответить с цитированием
  #6  
Старый 26.02.2008, 18:17
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

У меня при данной операции выкидывает ошибку:
Capability not supported
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #7  
Старый 28.02.2008, 18:33
Unocide Unocide вне форума
Прохожий
 
Регистрация: 23.11.2005
Сообщения: 16
Репутация: 10
По умолчанию

Цитата:
Сообщение от trenger
только вместо year нужно yyyy
не обязательно кому как угодно, хошь yyyy хошь year а хошь просто y

А YurkE звинения не учел шо бд Paradox по привычке SQL пихаю.
в Парадоксе увы не рулю, но думаю шо шот наподобие должно быть и там.
Ответить с цитированием
  #8  
Старый 28.02.2008, 18:42
Phedor Phedor вне форума
Начинающий
 
Регистрация: 28.02.2008
Сообщения: 118
Репутация: 21
По умолчанию

Параметры:
Params.ParamByName('CurrentDate').Value := Year*10000+Month*100*Day;

В запросе:
AND (:CurrentDate-(Year(Birthday)*10000+Month(Birthday)*100+Day(Birt hday)>600000)
Ответить с цитированием
  #9  
Старый 29.02.2008, 17:56
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Спасибо!
Я обошелся более простым способом.
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #10  
Старый 29.02.2008, 17:57
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Ребята, подскажите!
Имеется 3 поля F1, F2, F3 (тип DATE) и поле R (тип DATE). (Paradox)
Мне нужно просумировать кол-во дней от последнего поля F до поля R по всей базе.
Для одного поля запрос такой:
SELECT SUM(F3 - R) FROM Base.db
Но прикол в том, что заранее неизвестно какое поле F1 или F2 или F3 окажется последним имеющим дату. (т.е. поле F3 как и F2 может оказатся пустым)...

Как мне реализовать это условие в запросе ???
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #11  
Старый 11.03.2008, 12:38
acl acl вне форума
Прохожий
 
Регистрация: 27.02.2008
Сообщения: 23
Репутация: 10
По умолчанию

Может что-то типа этого:
select if(f1>f2,if(f1>f3,sum(f1-r), sum(f3-r)), if(f2>f3,sum(f2-r),sum(f3-r))) FROM base.db;
?
У меня подобная инструкция отлично сработала, хотя немного и громоздкая....
Ответить с цитированием
  #12  
Старый 11.03.2008, 12:52
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
немного и громоздкая
Не громоздкая а закрученная!!!
Я это вот так решил!!!
Но все равно Спасибо
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter