SQLで文字列を時刻に型変換する方法

Lucea
2013-12-20 10:22 1823 2
SQLで文字列を時刻に型変換する方法を教えていただきたいです。

char型のAというカラムに'090000'が格納されています。

この値をtime型のBというカラムに型変換して登録したいのですが、

cast(A as time) としてもエラーが出てしまうので、現在は

cast(SubString(A,1,2)+':'+SubString(A,3,2)+':'+SubString(A,5,2) as time) と変換しています。

もっと簡単に変換する方法はありますでしょうか?

ご教示頂けましたら、助かります。
宜しくお願い致します。

コメント

2013年 12月 20日 (18:51)
こんにちは。
イノ(inno)です。

そうですね。
現在はそういう方法しかありません。

もしくは関数(FUNCTION)を作成してSQLを少しキレイに作成するのはどうでしょうか?
下記のSQLをご参考ください。

1)「fnCharToTime」関数を作成します。

CREATE FUNCTION dbo.fnCharToTime (
@Strchar(6)
)
RETURNS time AS
BEGIN
RETURN CONVERT(time, SUBSTRING(@Str,1,2)+':'+SUBSTRING(@Str,3,2)+':'+SUBSTRING(@Str,5,2))
END

2)結果

DECLARE @Str char(6)
SET @Str = '090000'
SELECT dbo.fnCharToTime(@Str)

どうでしょうか?
Lucea 2013年 12月 20日 (23:25)
やはり、簡単な方法はないのですね。
いろいろと検討したのですが、
関数を作成する方法は今後の参考にさせて頂くことになりました。ありがとうございました。