コンバートしようとした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; | 

 
       
       
       
       
       
     
     
     
     
     
     
     
     
     
        

コメント