2010-11-22 5 views
6

SQL Server 2008のtimeデータ型には、オプションの精度引数があります(既定値は7です)。これにより、小数点以下の桁数を保存および表示する回数を制御できます。SQL Server 2008 TIMEの精度を数時間に短縮できますか?

DECLARE @time time(3) 
SET @time = GETDATE() 
PRINT @time 

上記の本を印刷し、

10:47:25.347 

ドキュメントは、最小の精度がtime(0)であると言います。これは、10:47:25を保存して印刷します。

精度をさらに下げて秒をゼロにする/ゼロにすることは可能ですか:10:47

これは、拘束(DATEPART(seconds, @time) = 0)を追加することで手動で行うことができます。データ入力時に数式を実行して秒数をゼロにし、印刷時に手作業でフォーマットしますが、簡単な方法でフィールドを定義しますテーブルは「時と分」として、dateタイプと同じように、フィールドを「日付、時刻コンポーネントなし」として定義することができます。

答えて

4

号には、ここでtime(0)

1
SET @time = convert(varchar(5),getdate(),8) 

あなたはVARCHARにGETDATEの結果をキャストしているよりも、任意の更なるtimeデータ型の精度を削減し、時間を意味modifier 8でそれをフォーマットすることはできませんフォーマット。

EDIT:これは文字列を提供しています。あなたが探している結果ではない可能性があります。

よろしくお願いいたします。

1

時間間隔がSQL Serverで認識される間隔(分、時、日など)のいずれかである場合、考慮する可能性のある別のオプションは、独自のデータ型を定義することです次に、いくつかのベース基準時刻から開始わずか絶対時間数(整数として格納またはSQL Serverの使用(深夜1900年1月1日)

が記憶へ変換するのと同じベース基準時間を使用(@IntVal)を、日時としての実際の時間(@realDT)に置き換えます(@baseDatetimeを基本時刻として定義した場合、

Declare @baseDatetime smalldatetime 
Set @baseDatetime = 0 -- for 1 Jan 1900, or 
Set @baseDatetime = 'd Month yyyy' for some other base 

@realDT->@IntVal: @IntVal = DateDiff(hour, @baseDatetime, @realDT) 
@IntVal->@realDT: @realDT = DateAdd(hour, @IntVal, @baseDatetime) 
2

smalldatetimeを使用し、日付ビットを無視します(1900年1月1日になります)。微妙な精度があります。

時間がこれと同じように便利です(SQL Server 2005以前、:-)

関連する問題