健保資料庫因為有個資洩漏的危險性,所以所有相關判斷的出身分的資料都有加密,包括了身分證字號以及生日。經過資料加密,所有病人的生日“年月日”就變成了 “年月00 ”的格式。
如何將生日變成實際可以計算的日期格式,對計算年齡十分重要,分享一下個人的經驗與數個Facebook上討論的方法供大家參考。
方法一:
這是我自己使用的方法。
STR_to_DATE (Birthday, %Y%M%D) as birth
下一張表在生日欄使用:
Date_format (Birth, %Y%M01) as Birth
給使用Mysql 做健保資料庫探勘的大家做參考囉!
兩張表就可以將生日變成 年月01, 這樣就可使用 Datedifferent 直接與住院日相減,用以估計病人的年齡。
算出來的是日數,可以在下一張表除以365.25 就是年,再乘以12 就是月。
用哪個比較好,就看研究需求囉
方法二:
在Facebook 的 健保資料庫研究討論區 (MySQL+Navicat+MedCalc) 社團中 陳俊宇醫師 所提供的方法:
先轉成年月6碼:
EXTRACT(YEAR_MONTH FROM birthday)
然後再使用 PERIOD_DIFF(200802,200703) 來計算間隔幾個月。
方法三:
在轉換時先將每個日期設定為1日就好
DateX=left(dateX,6)+'01'