2017-08-28 21 views
1

現在の日付と時刻をミリ秒単位で正確に記録するソフトウェアがあります。 PostgreSQLとMSSQL Serverには問題はありませんが、私はMDBに主キー違反があります。 MS Accessを使用してテーブルを見ると、秒単位の正確な日付時刻が表示されます。MSAccessデータベースの主キーとしてミリ秒のDateTimeを使用できません

ミリ秒単位でMDBに書き込むことはできますか?

+3

[MS Accessはミリ秒の時間値を扱うことができます(実際には)](http://www.devx.com/dbzone/Article/39046)という検索で出てきましたが、それはおそらく努力の価値がありません。 PKとして適切である。 – Andre

+0

Andre、申し訳ありませんがリンクを開くことができませんでした。 – Paul

+0

@Andreからリンクを開く際に問題はありません。しかし、ここに[印刷版](http://www.devx.com/print/dbzone/Article/39046)へのリンクがあります。 – Gustav

答えて

2

AccessのDateTimeフィールドには秒単位の精度があります(実際には浮動小数点数として格納されますが、秒単位で報告され、設定されます)。ミリ秒を保存する場合は、別のフィールドに格納することができます。

日付/時刻のミリ秒部分を整数フィールドに格納し、2つのフィールドをリンクする複合主キーを使用できます。私はコンポジットプライマリキーに対する固い引数を聞いたことはありませんが、それは最高で奇妙です。

+0

私のコンポーネントでは、MDBのケースはそれほど重要ではないので、PKなしでMDBを残します。もし誰かがMDBを使いたいなら、それは自分の責任でやるでしょう。 – Paul

+0

@Andreによってリンクされたすばらしい記事からわかるように、解像度は実際はミリ秒です。 _However_、それはAccessで基本となるデータ型がキーとして使用する最後のデータ型であるfloat/doubleであるという事実は変わりません。 – Gustav

+0

@Gustav私はカッコ内の部分でそれを意味しました。実際には浮動小数点数なので、解像度自体は文字数に依存しません。 (基準日から遠い)日付/時間は、1ミリ秒の差を扱うことができない場合があります(計算が実行される可能性がありますが、数学はそれほど大きくはありません) –

0

yyyy-mm-dd hh:nn:ss.fffという名前のタイムスタンプをTEXT(23)列に保存すると、それは完全であると言えるでしょう。その列を主キーとして使用することができ、数値部分がすべてゼロに埋め込まれている場合は、値をソートして直接比較することができます。しかし、日付の算術はちょっと厄介です。

関連する問題