-Метки

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

 -Рубрики

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

 

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

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

 -Статистика

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


К ВОПРОСУ ПРО ВОЗРАСТ (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 в ссылку
 Подписаться на комментарии
 Подписать картинку