プロが教える店舗&オフィスのセキュリティ対策術

つまり「20040102」のデータを「2004-01-02」という文字型に変換したいのですが?

select
substring(convert(nvarchar, f1, 1,4) + '-' +
substring(convert(nvarchar, f1, 5,2) + '-' +
substring(convert(nvarchar, f1, 7,2)
from tbl1

だと一応変換はしてくれるのですが,面倒なのが「0」というデータがある場合
'0--'というふうに出てきてしまうのです

int → char
20041123 → '2004-11-23'
0 → ''
'' → ''
という形に変換できないでしょうか?

A 回答 (1件)

バージョンが6.5以前だとダメだけど、こんな感じでできます。


(↑余計なやり取りが増えてしまうのでバージョンは明記で)

select
convert(varchar(10),
cast(cast(
--(1) 0はNULLに
case when f1=0 then null else f1 end
--(2) f1をvarcharにした後datetimeに
as varchar)as datetime)
--(3) 日付の書式変換
,21)
from tbl1

この回答への補足

ありがとうございます。試してみます。

補足日時:2004/12/27 17:42
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!