2

SQL Server 2008 R2 を使用しています。

SQL Server Management Studio を使用して、データベースと新しいテーブルを作成しました。

テーブルには、データ型Time(0)Datetime2(0).

ここに画像の説明を入力

値を持つこのテーブルにレコードを挿入しました:

12:50:34...........2015-02-02 12:50:34

しかし、このレコードが保存されると、値は次のようになります。

12:50:34...........2015-02-02 12:50:34.0000000

これは、SQl Server management studio 内のイメージです。 ここに画像の説明を入力

したがって、Time(0)列の値は入力したとおりのままです。しかし、Datetime2(0)列の値には最後に 0 があります。

DateTime2(0)列の値が変わるのはなぜですか?

4

1 に答える 1

0

Datetime2(0)は、小数精度が であることを意味し0ます。

SQL Server が日付を の型で保存しdatetime2、そのデータを読み取ると、datetime2ミリ秒の精度が 7 であると考えてから、nまたは0この場合は切り捨てます。

例えば:

DECLARE @d1 datetime2 = CAST('1968-10-23 12:45:37.1237' AS datetime2(0))
        @d2 datetime(0) =  '1968-10-23 12:45:37.1237';

SELECT @d1, @d2;

結果は

1968-10-23 12:45:37.0000000     1968-10-23 12:45:37

これ(結果)は次の場合と同じですtime(0)

DECLARE @t1 time =  CAST('1968-10-23 12:45:37.1237' AS datetime2(0)),
    @t2 time(0) =  '1968-10-23 12:45:37.1237';

SELECT @t1, @t2

したがって、列のタイプとしてdatetime(0)andを使用する場合time(0)、動作は同じです。

DECLARE @t table(dt2 datetime2(0), t time(0));

INSERT INTO @t VALUES ('1968-10-23 12:45:37.1237', '1968-10-23 12:45:37.1237');

SELECT * FROM @t;

結果は次のとおりです。

dt2                 t
1968-10-23 12:45:37 12:45:37
于 2015-07-04T12:56:44.197 に答える