SQLで西暦から和暦変換を行う

記事内に広告が含まれています。

SQLServerには西暦和暦変換関数が無いようなので、自作してみます。

SQLを使って西暦から和暦変換を行う

SQLServerには西暦和暦変換関数が無いようなので、自作してみます。

西暦和暦変換SQL

SQLServerで指定された西暦の年月日を和暦の年月日に変換するSQLです。

Declare @targetDate VARCHAR(10) = '2013/07/25'
Declare @year int
Declare @month int
Declare @day int
Declare @wareki varchar(50)
Declare @gengo varchar(5)
Declare @warekiyear varchar(10)

IF @targetDate < '1868/01/25'
BEGIN
    PRINT '明治以前は変換できません'
    RETURN
END

set @year  = CAST( SUBSTRING( @targetDate, 1, 4 ) AS INT )
set @month = CAST( SUBSTRING( @targetDate, 6, 2 ) AS INT )
set @day   = CAST( SUBSTRING( @targetDate, 9, 2 ) AS INT )

--和暦変換
IF @targetDate  > '1989/01/07'
BEGIN
    SET @gengo = '平成'
    SET @warekiyear = CONVERT( VARCHAR( 5 ), @year - 1988 ) + '年'
END
ELSE
BEGIN
    IF @targetDate > '1926/12/24'
    BEGIN
        SET @gengo = '昭和'
        SET @warekiyear = CONVERT( VARCHAR( 5 ),@year - 1925 ) + '年'
    END
    ELSE
    BEGIN
        IF @targetDate > '1912/07/29'
        BEGIN
            SET @gengo = '大正'
            SET @warekiyear = CONVERT( VARCHAR( 5 ), @year - 1911 ) + '年'
        END
        ELSE
        BEGIN
            SET @gengo = '明治'
            SET @warekiyear = CONVERT( VARCHAR( 5 ), @year - 1867 ) + '年'
        END
    END
END

-- 1年だったら元年と表示を変更します
IF @warekiyear = '1年'
BEGIN
    SET @warekiyear = '元年'
END

--結果を文字列として編集
SET @wareki = @gengo + @warekiyear + CONVERT( VARCHAR( 2 ),@month )+ '月' + CONVERT( VARCHAR( 2 ), @day ) + '日' 

--結果の表示
PRINT @wareki

実行結果は

平成25年7月25日

です。

ちなみに

Declare @targetDate VARCHAR(10) = '1989/01/06'

で実行すると

昭和64年1月6日

です。

あとは「@targetDate」の日付を変更して試してみてください。

スポンサーリンク
スポンサーリンク
【PR】
SQL学習におすすめの本
SQL Server
スポンサーリンク
ソフトウェア開発日記
タイトルとURLをコピーしました