Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Напоминалка о Днях Рождения  (Прочитано 11622 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Harry
Команда клуба

ua
Offline Offline

« : 02-06-2005 10:25 » 

Такую вот штуку пишу. Хочется, чтобы программа выдавала напоминание о днях рождения за выбранное количество дней. Есть база пиплов с занесенными датами рождения. Есть форма с SQL-запросом и DBGrid, есть два календаря для указания граничных значений времени (интервал "от" и "до").
Запрос:
Код:
SELECT Base."Code", Base."Name", Base."Birthday"
FROM "Base.DB" Base
WHERE Base."Birthday" BETWEEN :OT AND :DO

:OT и :DO - соответственно значения, которые будут выбираться в двух календарях на форме
Запрос должен вернуть людей, у которых ДР в интервале "от"-"до".
Но год мне не нужен, нужно, чтобы из даты выхватывался месяц. Из величин ОТ и ДО я его достаю функциями
DecodeDate(OT, Year, Month, Day) и DecodeDate(DO, Year, Month, Day). А вот как достать из набора данных Base."Birthday"? Там полная дата, день-месяц-год, сравнивать ее с месяцем - некорректно.
Как извлечь месяц из поля DateTime базы данных?  :nono:
Записан

Слабый пол силен в силу слабости сильного пола к слабому
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 02-06-2005 10:38 » 

Вообще дата, если закодированная - это BCD число. С ним можно производить операции сравнения и они будут корректными. Берешь текущую дату, кодируешь ее и сравниваешь - и все.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 02-06-2005 10:45 » new

Не совсем в топик, но все-же:

SELECT Base."Code", Base."Name", Base."Birthday"
FROM "Base.DB" Base
WHERE EXTRACT(DAY FROM  Base."Birthday")  BETWEEN :OT AND :DO AND
EXTRACT(MONTH FROM Base."Birthday") = :MESAC

See also: Local SQL Help  -> EXTRACT function
 

Записан

С уважением, Oldy.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines