コンバートしようとしたAccessデータに「誕生日和暦元号」「その数字年」だけがありました。
(月日がない)
そんな無茶な、、しかし、誕生日が正しく入っていないのに、旧暦や節分で年齢を出せとは、、、それは無理な話であります。(新暦でしたら出ますが)
とりあえず、新暦ベースでいきますと
沙羅に必要なのは西暦なので単に西暦だけを生成・セットしたい場合は、とりあえず和暦元号の空白文字を消し、数字を全部半角にして、元年⇒1 にして
更新クエリーで
1 2 3 4 5 6 7 |
UPDATE genzai_birth SET seireki = IIf(birthwareki= "令和", [wsarekinen] + 2018, IIf(birthwareki= "昭和", [wsarekinen] + 1925, IIf(birthwareki= "平成", [wsarekinen] + 1988, IIf(birthwareki= "明治", [wsarekinen] + 1867, IIf(birthwareki= "大正", [wsarekinen] + 1911, Null))))) |
でとりあえず、、、よしとしましょう。
年号一覧表を作ってリンク張って更新したり日付型にして、云々、、、は遅いですもんね。
※sqlでは
1 2 3 4 5 6 7 |
UPDATE dbo.Genzai SET Birthwareki = genzai_birth.birthwareki, BirthJapanYear = genzai_birth.BirthJapanYear, birthnen = genzai_birth.birthnen FROM dbo.Genzai INNER JOIN dbo.genzai_birth ON dbo.Genzai.ID = dbo.genzai_birth.ID |
これで、10万行の処理が一瞬で完了、、、、
と思いきや、、、
データの中に平成36年とかあったりして、、、結局何やらかんやらと2時間くらいかかってしまいました。。。。
ついでに干支の一括作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
UPDATE GENZAI SET eto = CASE ((birthNEN - 4) % 12) WHEN 0 THEN '子' WHEN 1 THEN '丑' WHEN 2 THEN '寅' WHEN 3 THEN '卯' WHEN 4 THEN '辰' WHEN 5 THEN '巳' WHEN 6 THEN '午' WHEN 7 THEN '未' WHEN 8 THEN '申' WHEN 9 THEN '酉' WHEN 10 THEN '戌' WHEN 11 THEN '亥' ELSE NULL END; |
旧暦または基準日で干支を計算する場合、年の変わる基準日を’YYYY-MM-DD’として、、、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
UPDATE your_table_name SET eto = CASE WHEN birth_date >= CAST('YYYY-MM-DD' AS DATE) THEN CASE ((birth_year - 4) % 10) WHEN 0 THEN '甲' WHEN 1 THEN '乙' WHEN 2 THEN '丙' WHEN 3 THEN '丁' WHEN 4 THEN '戊' WHEN 5 THEN '己' WHEN 6 THEN '庚' WHEN 7 THEN '辛' WHEN 8 THEN '壬' WHEN 9 THEN '癸' END + CASE ((birth_year - 4) % 12) WHEN 0 THEN '子' WHEN 1 THEN '丑' WHEN 2 THEN '寅' WHEN 3 THEN '卯' WHEN 4 THEN '辰' WHEN 5 THEN '巳' WHEN 6 THEN '午' WHEN 7 THEN '未' WHEN 8 THEN '申' WHEN 9 THEN '酉' WHEN 10 THEN '戌' WHEN 11 THEN '亥' END ELSE NULL END; |
コメント