SQL Server 改元和暦対応/.NET和暦レジストリ取得クラスで関数を作る
もうすぐ改元ですね、改元対応の計画を立ててみえると思います。
大変なのは和暦判断です。
Windowsの和暦レジストリから、一覧取得するクラスを使ってDB側で和暦置換する仕組みを公開します。
今回使用するのはSQL CLRの仕組みです。
※参考:SQL CLRの使い方(VS2017/SQL Server 2017) https://ssit.jp/tech-013
■公開ソースの結果(下のテーブル【dbo.Table_1】を和暦置換する)
■和暦のソースとなるレジストリ
■使用までの手順
①Visual StudioでDLLを作成
②SQL Serverにアセンブリ登録
③SQL Serverの関数登録
後は使用するだけです!
■手順1:①Visual StudioでDLL作成
Visual StudioでSQL CLRを使用する方法は:https://ssit.jp/tech-013
プロジェクト設定値【SqlClrWarekiで設定してね】
■手順2:②SQL Serverにアセンブリ登録
ALTER DATABASE TEST SET TRUSTWORTHY ON;
CREATE ASSEMBLY SqlClrWareki
FROM 'C:\Temp\SqlClrWareki.dll'
WITH PERMISSION_SET = UNSAFE;
※レジストリアクセスしますので、PERMISSON_SET=UNSAFEで。
※ファイルは使用する場所に配置してね
■手順3:③SQL Serverの関数登録
CREATE FUNCTION WLargeFormat(@WarekiDate DATETIME)
RETURNS NVARCHAR(MAX)
AS EXTERNAL NAME SqlClrWareki.Wareki.WLargeFormat;
CREATE FUNCTION WShortFormat(@WarekiDate DATETIME)
RETURNS NVARCHAR(MAX)
AS EXTERNAL NAME SqlClrWareki.Wareki.WShortFormat;
今回は2つの関数を用意してます。
【平成〇〇年〇月〇日】と【H〇/〇/〇】が取得できます。
■SQL CLR+和暦取得クラスのソース
ソースが見にくいのでこちらのブログで無料公開中