這一個已經給我一段時間了。最近幾年前,當我重新訪問一些我爲客戶寫的代碼時,我懷疑是否有更優雅的解決方案來解決這個問題。SQL Server 2005,計算從出生日期即將到來的生日
客戶存儲所有的客戶信息,包括出生日期(日期時間字段)
的日期,他們運行的每個星期一檢索任何客戶的生日會落在接下來的一週內的提取物。
I.e.如果摘錄是在1月1日星期一運行的,則會在1月8日星期一 - > 1月14日星期日之間(包括)生日的客戶被檢索。
我的解決方案是使用Datepart(dy)函數計算所有即將到來的生日,其基於客戶出生日期轉換爲年份,並添加一些邏輯以包括在一年結束時運行的提取。 問題在於,如果客戶出生在閏年和/或提取物在2月29日之後的閏年運行,那麼使用Day of year會將結果推遲1天,因此我必須再次添加更多邏輯,以便程序返回預期的結果。
對於簡單的任務來說,這看起來相當過分。 爲了簡單起見,假設表'customer'包含4個字段,名字,姓氏,dob和地址。
如何簡化這個任何建議將真正理解
韋斯
當然!我現在明白了。非常感謝你的解釋。這似乎很明顯,現在我明白它是如何工作的!一旦你陷入了以相同的方式看待事物,雖然你錯過了明顯的。非常感謝。 – 2010-09-20 13:36:00
哦,來吧,這是SO的力量!你知道,集思廣益的事情。 – 2010-09-20 13:38:58
我在30天內使用這種方法,發現一年中的這個時候(12月15日)都不起作用。看看這裏的答案:http://stackoverflow.com/questions/83531/sql-select-upcoming-birthdays – Warren 2015-12-15 04:49:03