時刻に関連する値を格納するnvarcharフィールドがあります。T-SQL:nvarcharからhh:mm:ss
eg
104:45:50 (104 hrs, 45 mins, 50 secs).
これを計算のための実行可能な/使用可能なフィールドに変換する方法についての提案はありますか?
SQL 'time'は最大23:59:59までのみ可能で、したがってnvarcharとして格納します。
事前に感謝します。
時刻に関連する値を格納するnvarcharフィールドがあります。T-SQL:nvarcharからhh:mm:ss
eg
104:45:50 (104 hrs, 45 mins, 50 secs).
これを計算のための実行可能な/使用可能なフィールドに変換する方法についての提案はありますか?
SQL 'time'は最大23:59:59までのみ可能で、したがってnvarcharとして格納します。
事前に感謝します。
文字列データ型は数値情報には適していません。この場合、秒単位で処理するとh:m:s単位に出力することができますが、その逆は醜い問題です。
MS SQL Serverの2014スキーマのセットアップ:1
CREATE TABLE Table1
([badcolumn] varchar(9), [num_secs] int)
;
INSERT INTO Table1
([badcolumn])
VALUES
('104:45:50'),
('99:45:50')
;
問合せ:
select
badcolumn, (h*3600)+(m*60)+s as num_seconds
from table1
cross apply (
select
charindex(':',badcolumn) x
, charindex(':',badcolumn, charindex(':',badcolumn)+1) y
) ca1
cross apply (
select
try_cast(substring(badcolumn,1,x-1) as int) h
, try_cast(substring(badcolumn,x+1,y-x-1) as int) m
, try_cast(substring(badcolumn,y+1,20) as int) s
) ca2
| badcolumn | num_seconds |
|-----------|-------------|
| 104:45:50 | 377150 |
| 99:45:50 | 359150 |
あなたの質問は今解決されましたか?あなたはまだこの答えについて質問がありますか? [help/accepting](https://stackoverflow.com/help/someone-answers)の詳細については、[** Click The Tick **](https://ibb.co/ikqyO6) –
フィールド値も99:45:50(99時間、45分、50秒)になる可能性があります.2または3桁の時間です。 – BigIWT
"_a実行可能/使用可能な計算フィールド_"どのような計算ですか?あなたは 'int'として保存し、その時間に入る秒数を格納することができます。 – Ivar
時間/分/秒の数を表す数値型として保存します。 [h]:mm:ss形式のものを格納するのはまったく問題ありません(もちろん、後でアプリケーションやレポートに変換することもできます) –