コンバートしようとしたAccessデータに「誕生日和暦元号」「その数字年」だけがありました。
(月日がない)
そんな無茶な、、しかし、誕生日が正しく入っていないのに、旧暦や節分で年齢を出せとは、、、それは無理な話であります。(新暦でしたら出ますが)
とりあえず、新暦ベースでいきますと
沙羅に必要なのは西暦なので単に西暦だけを生成・セットしたい場合は、とりあえず和暦元号の空白文字を消し、数字を全部半角にして、元年⇒1 にして
更新クエリーで
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では
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時間くらいかかってしまいました。。。。
ついでに干支の一括作成
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’として、、、
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;


コメント