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」の日付を変更して試してみてください。
