在資料庫中,農曆應該使用什麼數據類型存儲?
考慮過使用date類型,但農曆中會遇到閏月或者2月有三十的情況,這樣的存肯定不妥。
場景是由於大多數人生日都是用農曆生日,支持設置農曆生日可以讓商家更加精準的利用會員生日這樣的節日來增加有針對性的營銷方案!
目的是能夠在大數據的情況下查詢出最近幾天將要過生日的會員,公曆農曆同時查詢出來。
目前只有date類型的公曆,請問要達到目的,需要增加幾個欄位?分別是什麼類型?---------------------------------------
現在儲存已經解決,查詢近幾日內過生日的會員又遇到問題,會涉及到農曆的加減問題,除了封裝sql函數外,還有什麼辦法?
農曆的閏月可能出現在所有月份,但前後幾百年內都沒有閏臘月的情況:
農曆日範圍是初一到三十,大小月根據月相判斷。
農曆年正確的記錄方式應該是公元XXXX年+干支紀年,如,今年是乙未年,同時農曆月、日也有干支紀年,當然,這個也可以拿公式計算。
所以,記錄農曆日期需要:
月一共有24種不同值
日一共有30種不同值
年份假設按照1000年計算,一共需要10+5+5 bit,也就是20 bit數據,約3位元組,在32位平台上,用一個標準的int就可以保存。
至於怎麼存儲閏月,可以0表示正月,2表示二月,4表示三月……22表示臘月,1表示閏正月,3表示閏二月……(這樣還可以方便排序)
參見:https://zh.wikipedia.org/zh-cn/%E8%BE%B2%E6%9B%86
方法很多,自己定義一套規則就是了,或者寫一套百年內的農曆公曆轉換也是可以實現的。瀉藥。
可以存農曆對應的公曆的Date。
這樣也可以排序,還可以方便的知道公曆日期。
想知道近幾日過生日,按這個欄位就可以了。
想知道農曆的話,做一個轉換。
或者再加一個varchar欄位存漢字六月初五 ,臘月廿二等等
推薦閱讀:
※有什麼適合小團隊的協作工具?
※用於量化投資策略(最高日頻率)研究的金融資料庫,用 MySQL 是否足夠?有哪些可能遇到的瓶頸?
※PostgreSQL 與 MySQL 相比,優勢何在?
※Facebook 用戶量十分龐大,為什麼還使用 MySQL 資料庫?
※網路遊戲伺服器與資料庫的關係?