2017-02-04 8 views
0

私はTIMEテーブルを作成しました。この表には2つの列があります(1つは分、もう1つは秒)。彼らのデータ型をDecimalとして作成しました。TIme - SQL(分と秒)

分数と秒がこの形式である派生列を作成する方法はありますかmm:ss from two column?

IF NOT、DECIMAL型ではない場合は、分分の列にデータを挿入するにはどうすればよいですか?それはどんなタイプですか?

ありがとうございました!

注私は@mclaassenが指摘したように、あなたがtimeデータ型で構築使用していない理由を、私は好奇心だろうSQLサーバー

+3

なぜ 'time'列タイプに建てを使わないのでしょうか? – mclaassen

答えて

1

あなたのコメントは、あなたが区間(または期間)で算術演算をしようとしているように聞こえます。

SQL Serverのtimeデータ型 "時刻を定義します。時刻にはタイムゾーンを認識せず、24時間表示に基づいています。" 2つのtime値を追加することはできません。 2時+ 3時は文字通りナンセンスです。 SQL Server 2012で。 。 。

select cast('2:00' as time) + cast('3:00' as time) 
Operand data type time is invalid for add operator. 

その他のdbmsは、無意味な数値を返すことがあります。

標準SQLには、intervalというデータ型が含まれています。これは、期待する算術演算と書式設定をサポートしています。だから2時+ 3時間は5時0分(5時)に戻ります。 intervalデータ型のサポートがない場合は、最も細かい単位(秒)を整数として格納し、表示用にフォーマットします。私はビューを自分で使うかもしれない。

declare @val as integer; 
-- 10:01:12, 10 hours, 1 minute, 12 seconds, in seconds. 
set @val = (10 * 60 * 60) + (1 * 60) + 12; 

-- Leading zeroes for minutes and seconds. 
select @val as total_sec, 
     concat(@val/(60 * 60), ':', format((@val/60) % 60, 'D2'), ':', format(@val % 60, 'D2')) as total_time 
 
total_sec total_time 
-- 
36072  10:01:12 
0

を使用しています。

つまり、実際にタイムテーブルを手作業で作成する場合は、計算された列を持つことができます。それをtimeStringとしましょう。

alter table [time] 
    add timeString as (left('0' + cast([minutes] as varchar(10)), 2) + ':' + left('0' + cast([seconds] as varchar(10)), 2)) 

SQL Serverの計算列のドキュメントについては、https://msdn.microsoft.com/en-us/library/ms188300.aspxを参照してください。

関連する問題