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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2012, 10:16   #1
Gul'ka
Пользователь
 
Аватар для Gul'ka
 
Регистрация: 11.02.2011
Сообщений: 69
Восклицание Нужно извлечь год

Уважаемые программисты, помогите пожалуйсто.
Дело в том что нужно мне посчитать сколько лет человеку,т.е. Текущая дата (точнее год, это YEAR(GetDate())-дата рождения() проблема в том что в поле дата рождения формат записи 28.02.2012, а мне нужно извлечь только год, помогите как это сделать?
Gul'ka вне форума Ответить с цитированием
Старый 28.02.2012, 11:08   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
YEAR(GetDate())-дата рождения()
а не пробовали YEAR(GetDate())-YEAR(дата рождения())? или у вас в строке дата сохраняется?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 28.02.2012, 11:16   #3
Gul'ka
Пользователь
 
Аватар для Gul'ka
 
Регистрация: 11.02.2011
Сообщений: 69
По умолчанию

Спасибки тебе огромное, блин такая мелочь, а столько возилась, пробовала и через DateDiff, а все окозалось значительно проще спасибо тебе огромное
Gul'ka вне форума Ответить с цитированием
Старый 28.02.2012, 11:56   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ой, не всё так просто...
хотя, конечно, если плюс-минус один год не проблема - тогда всё просто!

если дата рождения 31 декабря 2011 года, а текущая дата 1 января 2012 - так такой подход покажет 1 год (это неправильно)

зато от 1 января 2011 года до 31 января 2011 года - разница 0 лет (что, кстати, правильно!)


p.s. на форуме такие обсуждения/дискуссии были неоднократно.
при желании легко найдёте эти темы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2012, 12:27   #5
Gul'ka
Пользователь
 
Аватар для Gul'ka
 
Регистрация: 11.02.2011
Сообщений: 69
По умолчанию

спасибо большое за помощь)

Последний раз редактировалось Gul'ka; 28.02.2012 в 12:34.
Gul'ka вне форума Ответить с цитированием
Старый 28.02.2012, 12:34   #6
Gul'ka
Пользователь
 
Аватар для Gul'ka
 
Регистрация: 11.02.2011
Сообщений: 69
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
а не пробовали YEAR(GetDate())-YEAR(дата рождения())? или у вас в строке дата сохраняется?
Прости, а не мог бы ты еще помочь в запросе?
Мне нужно создать следующий запрос:
через Case When
Если [kVidObuch]=3 Or [kVidObuch]=4 OR [kVidObuch]=5 Then 1 затем
пол (поле [kPol] если м=1 усли ж=0) если пол=1 то проверить (YEAR(GETDATE()) - YEAR(dbo.KADR.DataRojd))>50 Если да то 1 , затем если пол = 0 то (YEAR(GETDATE()) - YEAR(dbo.KADR.DataRojd))>45 если да, то 1 нет
[molodSpec]=1 Then 1 Else (YEAR(GETDATE()) - YEAR(dbo.KADR.DataPriem))=1 Then 1 Else 0 End
Все это далжно быть записанно в один Case When.
Gul'ka вне форума Ответить с цитированием
Старый 28.02.2012, 12:37   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

вы наверное что-то путаете: конструкция
Код:
select case <переменная>
case <value1>
case <value2>
case <value3>
case else
end select
производит выборку по значению в одной переменной. Гипотетически, можно сделать код на проверку, но не уверен, что овчинка будет стоить выделки)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 28.02.2012, 12:44   #8
Gul'ka
Пользователь
 
Аватар для Gul'ka
 
Регистрация: 11.02.2011
Сообщений: 69
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
вы наверное что-то путаете: конструкция
Код:
select case <переменная>
case <value1>
case <value2>
case <value3>
case else
end select
производит выборку по значению в одной переменной. Гипотетически, можно сделать код на проверку, но не уверен, что овчинка будет стоить выделки)
Да, нет, мне нужно составить запрос по схеме: пишу простыми словами:
Если смежная профессия =3 То 1 Иначе проверяем дальше если пол мужской и ему больше 50 лет то 1 и если пол женский то и ей больше 45 то 1 иначе проверяем дальше, если молодой специалист то ставим 1 иначе проверяем, работает он меньше года То 1 Иначе 0.
Вот такую мне нужно сделать запрос в сохраненой процедуре в ADP.
Gul'ka вне форума Ответить с цитированием
Старый 28.02.2012, 14:48   #9
Gul'ka
Пользователь
 
Аватар для Gul'ka
 
Регистрация: 11.02.2011
Сообщений: 69
По умолчанию

Цитата:
Сообщение от Gul'ka Посмотреть сообщение
Да, нет, мне нужно составить запрос по схеме: пишу простыми словами:
Если смежная профессия =3 То 1 Иначе проверяем дальше если пол мужской и ему больше 50 лет то 1 и если пол женский то и ей больше 45 то 1 иначе проверяем дальше, если молодой специалист то ставим 1 иначе проверяем, работает он меньше года То 1 Иначе 0.
Вот такую мне нужно сделать запрос в сохраненой процедуре в ADP.
Все уже не нужно, я сама разобралась, спасибо все равно за помощь)
Gul'ka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как извлечь данные в таблицу, если нужно посылать сразу множество запросов? Novichok PHP PHP 1 28.03.2011 19:28
Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти год с наименьшим номе Figushkin Помощь студентам 2 04.06.2010 23:16
Год вместе... NITRO2025 Свободное общение 14 23.01.2010 15:24
Год в автомате valerij Microsoft Office Excel 2 04.01.2010 13:03
На год раньше Askat Общие вопросы Delphi 1 22.08.2007 15:15