MS SQL ServerでHHMMSS形式のinteger型をHH:MM:SSの文字列に変換する
SysJobsなどのシステムテーブルで使用されている、時刻のフォーマットがinteger型で、HHMMSS形式で格納されている為、これをHH:MM:SSの文字列に変換する方法。
もともと、クライアント側(プログラム側C#等)のDate関数を使うことが想定されている為、SQL Server側には、変換する関数が用意されていない。
100で割っていく方法など、いろいろあるが、以下で変換可能
SELECT STUFF(STUFF(RIGHT('0000' + CAST(<対象カラム> AS VARCHAR(6)),6),3,0,':'),6,0,':') AS 'HH:MM:SS' FROM <対象テーブル>
- ストアドファンクションを作る
CREATE FUNCTION IntegerToHHMMSS(@intHHMMSS INT) RETURNS VARCHAR(8) AS BEGIN RETURN(STUFF(STUFF(RIGHT('0000' + CAST(@intHHMMSS AS VARCHAR(6)),6),3,0,':'),6,0,':')); END GO
DateTime型ではないのでConvertを使って変換はできない。