-Рубрики

 -Метки

anime christmas densetsu ginga ginga densetsu weed hdr photohunt postcrossing twitter weed ёлки аниме анонс арбатско-покровская линия арт билет билетик бирюлёво бирюлёвская линия бкл ввц вднх видео выставка город города график график движения поездов дбт дбтwalks декор день без транспорта достоевская достопримечательности единый жк замоскворецкая линия калининско-солнцевская линия карта картинки карты коммунарка креатив ксл кунцево люблинско-дмитровская линия малое кольцо мгупс метро метрополитен метрострой миит мкмжд мнение можайский москва москва-сити московский метрополитен мосметро мостранспорт мультфильм мцк новая москва новости новый год объявление отзывы открытка панорама поезд поезда поход почта россии праздник программа программирование прогулка прогулки р-fad разведка местности район реклама рисунки на бойлерных рм рождество ростокино рут санкт-петербург следопыт сокольническая линия станции станция стрит-арт строительство твиттер тпк трамвай транспорт третий пересадочный контур троицкая линия тройка фото фотография фотоотчёт фотоохота фотопрогулка шдд ярославский

 -Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в Flash_A

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 03.10.2006
Записей: 3570
Комментариев: 14194
Написано: 32808


К ВОПРОСУ ПРО ВОЗРАСТ (ACCESS SQL)

Среда, 20 Марта 2019 г. 02:37 + в цитатник

Поскольку в последнее время участилась отчётность, связанная с указанием возраста преподавателей (я правда не понимаю, почему инстанции Университета направляют на кафедры запросы о возрастах, в то время как существует централизованная база данных РУТ, откуда я и сам утаскиваю дни рождения сотрудников в свою локальную базу), то поднимаю данную тематику. Бессмысленная и беспощадная бумажная работа.

В общем, вынудили меня (косвенно) привести в порядок запрос на подсчёт разницы дат. Оно от лукавого, то есть от лени: надоедает каждый раз проверять так оно или не так в базе запросами посчитано? Помнил, ведь, что не так, потому как поленился сделать в своё время всё как следует.

И я публикую этот запрос здесь исключительно для того, чтобы не потерять, а не дабы похвастаться каким-то инновационным решением, которое таковым, кстати, и не является вовсе. Это типовая инженерная задача базового курса программирования, правда при использовании языка структурированных запросов она решается не столь же просто и очевидно из-за громоздкости применяемых в ней конструкций. Всё же, SQL заставляет под другим углом думать по сравнению-то с тем же C#.

Исходно у меня был такой нехитрый запрос из серии "начхать на +/- год":

SELECT [ФИО], DATEDIFF("yyyy",Преподаватели.Год_рождения,DATE())-1 AS Возраст_в_годах
FROM Преподаватели;

Сейчас контроль стал более строгим, потому "начхать" уже становится себе дороже. Дополнил логикой, что если день рождения преподавателя к настоящему моменту ещё не случился, то вычитать из полученной разницы по годам один дополнительный год (декрементирование результата), а если день рождения случился, то просто брать разницу рассматриваемых годов.

Логика не хитрая, но время на отладку у меня отняла. В самом "Access" со скобками стабильно путался и без помощи "Notepad++" не обошлось. И тут же прошу прощения за отсутствие в запросах конечного форматирования согласно правилам вежливости программиста. В рамках HTML это проблематично и тоже отнимает время. Хочется потратить его на что-то более полезное, чем вежливость.

SELECT [ФИО],
IIF( Month(Преподаватели.Год_рождения) > Month(Date()),
DATEDIFF("yyyy",Преподаватели.Год_рождения, Date())-1,
IIF ( Month(Преподаватели.Год_рождения) = Month(Date()) AND Day(Преподаватели.Год_рождения) > Day(Date()),
DATEDIFF("yyyy",Преподаватели.Год_рождения, Date())-1,
DATEDIFF("yyyy",Преподаватели.Год_рождения, Date())
)
) AS Возраст_в_годах
FROM Преподаватели;

Рубрики:  События
Компьтерное
АУИшное
Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку