bigintデータ型とdatetimeデータ型で構成される複合キーまたは一意のインデックスを使用する必要があります。しかし、私はdatetimeの秒の要素が最も近い分に丸められ、データセットをインポートしようとすると重複したキー違反が発生することに気付きました。複合キーまたは固有インデックスを作成するためにbigintフィールドとともに使用すると、datetimeフィールドの精度が変わるのですか?
データセットは基本的にトランザクションデータなので、bigintフィールドに格納されているIDが繰り返されるため、一意のキーにdatetimeフィールドを含める必要があります。
例を与えることを、次の2つの行が「重複するキー行」というエラーが発生:
IDフィールド(BIGINT)を| ActionDate(datetime)
--------------------- | ---------------------- ----
1050000284002 | 2016-01-08 15:51:24.000
1050000284002 | 2016年1月8日15:50:35.000
値は明らかに異なっている(と、データベースに正しく保存されている)が、エラーが表示さ:
The duplicate key value is (1050000284002, Jan 8 2016 3:51PM).
(それは私が最初に複合体を作成したことを追加する価値がありますキーと一意のインデックスとそれを置き換えるので、持っている、上記で概説したエラーが代わりにインデックスを作成した)
私の質問は以下の通りです。
- は、私はだから四捨五入されている私の日時フィールドですキー/インデックスの整数を使用していますか?
- 日時フィールドの時間コンポーネントの精度を失うもう一つの理由はありますか?
- 例でキー違反が発生しないように問題を修正するにはどうすればよいですか?私はこれを行う場合は
これはあなたを欺く入力です。日時フォーマットの定義は、BOLにはっきりと記載されています。より高い精度が必要な場合は、Datetime2を使用します。 – ajeh
コメントありがとう、ajeh。私はBOLが何であるか分からない。私の編集(例を含む)が与えられても、あなたは私のデータ型が間違っているという意見はまだありますか? –
これ以上のSQL開発を行う前に、Books OnlineまたはBOLを理解しておく必要があります。 – ajeh