Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обновлять возраст по дате рождения в БД 
:(
    Опции темы
User
  Дата 12.4.2005, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 5.11.2004

Репутация: нет
Всего: нет



Я сгенерировал по дате возраст клиента, Затем со временем как вы понимаете возраст может меняться и данные я собираюсь автоматически обновлять в БД. В Access я нашел такую возможность:

SELECT Year(Date()-aaa)-1900 from bbb

bbb-таблица
aaa-поле с датой
но почему-то приходится еще 1900 отнимать

Но проблема в том что у меня Paradox. Такое возможно проделать и для него. Что то не могу найти данного кода. А может как то еще можно обновлять возраст в зависимости от текущей даты?
Если можно то примерчик подбрости? smile
PM MAIL WWW   Вверх
Marriage
Дата 12.4.2005, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



В оракле есть Sysdate. Попробуй, может прокатит.


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Петрович
Дата 12.4.2005, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 6
Всего: 55



А зачем в базе хранить возраст? Там надо хранить дату рождения. А возраст получать в запросе, как вычисляемое поле. Всегда будет актуальным smile.


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
DimW
Дата 13.4.2005, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



простыми словами мусор в БД некчему!!!
PM MAIL ICQ   Вверх
User
Дата 14.4.2005, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 5.11.2004

Репутация: нет
Всего: нет



согласен. Вы правы. Спасибо за совет.
PM MAIL WWW   Вверх
User
Дата 14.4.2005, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 5.11.2004

Репутация: нет
Всего: нет



А все же почему Paradox не позволяет так обновлять?

SELECT Year(Date()-aaa)-1900 from bbb

bbb-таблица
aaa-поле с датой
но почему-то приходится еще 1900 отнимать

Может там есть что то другое?
PM MAIL WWW   Вверх
Петрович
Дата 19.5.2005, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 6
Всего: 55



Цитата(User @ 14.4.2005, 14:32)
А все же почему Paradox не позволяет так обновлять?

SELECT Year(Date()-aaa)-1900 from bbb

В Paradox нет функций Year и Date.

Цитата(User @ 14.4.2005, 14:32)
но почему-то приходится еще 1900 отнимать

В Accesse, как ты указывал ранее?
Все очень просто.
Предположим что Date() - возвращает 19.05.2005, а значение ааа равно 17.05.2004.
Тогда результатом Date()-aaa будет 367 - число дней прошедших между датами.
Но, поскольку функция Year интерпретирует свой аргумент как дату, то 367 будет рассматриваться как дата. Даты же в Access'е кодируются как число прошедших дней от 01.01.1900. Соответственно 367, соответствует дате 01.01.1901.
Вот тебе и вся разгадка.
А теперь, почему так делать нельзя smile.
Я не зря выбрал в примере дату 17.05.2004. Если бы я выбрал дату 18.05.2004, то посмотрим что получилось бы:
Казалось-бы, если у человека день рождения 18.05.2004, то, 19.05.2005 ему уже один год. Но, по мнению Access, ему все еще 0 лет!
Все потому, что 19.05.2005-18.05.2004 = 366 дней. А 366 соответствует 31.12.1900 - ведь 1900 год это високосный год! Вот и получится ошибочный результат.




--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.