- PR -

リテラル文字→DateTime型のDB項目への代入誤差について

1
投稿者投稿内容
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2005-05-12 16:52
言語はVB6でDBはSQLサーバーの2000なのですが

リテラル文字からdatetime型への変換で誤差が生じるらしいと
いう話を小耳に挟みまして

ex. リテラル文字 '2005/05/12 11:22:33:444'
→ datetime型 '2005/05/12 11:22:33:443'

情報源を探しています。ご存知な方、ご教示頂ければ幸いです。
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2005-05-13 09:39
目を通してくださった方、申し訳ありません。
「なんのこっちゃ?」と思われたでしょう。

例えばVB6で

Dim Hoge As String
Hoge = '2005/05/12 11:22:33:444'

などというコードがあって、この変数HogeでもってDB(SQLServer)
のdatetime型の項目にINSERTなりUPDATEする。 ※1

次にSELECTでそのdatetime型の項目を見てみると
'2005/05/12 11:22:33:443' ※2
になっていたりする。

という話から、
「リテラル→datetime型への代入は誤差が生じる」
という定説???が私のまわりであるのですが、どうも違うような
気がしてなりません。
そこで識者の見解を伺いたいのです。

私は※1や※2の処理での暗黙の変換による精度誤差を疑っている
のですが、そもそものこの定説を形成する要因である具体が単なる
伝聞で検証対象が無いのです。

こんなことってありうるんでしょうか?
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-05-13 09:49
BOOKS ONLINE には、
引用:

datetime

300 分の 1 秒、つまり 3.33 ミリ秒または 0.00333 秒の精度で、1753 年 1 月 1 日から 9999 年 12 月 31 日までの日付と時刻データを格納するデータ型です。以下の表に示すように、値は .000、.003、または .007 秒の単位になるように丸められます。


とあります。
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2005-05-13 10:17
にしざきさん、ありがとうございます。

ボックスオンラインの「datetime 型と smalldatetime 型」
に載っている表の意味を理解していませんでした。

つくづく自分の読解力の無さに嫌気が。。。

1

スキルアップ/キャリアアップ(JOB@IT)