Этот уже давно меня раздражает.Недавно, когда я пересматривал некоторый код, который я написал для клиента, несколько лет назад, мне было интересно, есть ли более элегантное решение проблемы.
Клиент хранит всю информацию своих клиентов, включая дату рождения (поле даты и времени))
Они запускают выписку каждый понедельник, которая запрашивает любого клиента, чей день рождения выпадет в течение следующей недели.
Т.е., если выписка была запущена в понедельник 1 января, клиенты, чей день рождения упал между (ивключая) Понедельник 8 января -> воскресенье 14 января будет получено.
Мое решение состояло в том, чтобы использовать функцию Datepart (dy) и вычислять все предстоящие дни рождения на основе даты рождения клиентов, преобразованной в день года, добавляянекоторая логика для включения выдержки в конце года.Проблема заключалась в том, что использование Дня года отбрасывает результаты на 1 день, если клиент родился в високосный год и / или выписка выполняется в високосный год после 29 февраля, поэтому мне снова пришлось добавить больше логикипоэтому процедура вернула ожидаемые результаты.
Это казалось слишком сложным для простой задачи. Для простоты, скажем, таблица 'customer' содержит 4 поля: имя, фамилия, dob и адрес.
Любые предложения о том, как упростить это, были бы очень благодарны
Уэс