A5:SQL Mk-2

開発のこと、日々のこと

SQLServerのDateTime2

ホーム フォーラム A5:SQL Mk-2掲示板 SQLServerのDateTime2

  • このトピックには4件の返信、1人の参加者があり、最後にaraiにより1ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #32156 返信
    arai
    ゲスト

    SQLServerでDateTime2(3)で定義してるテーブルについて、Excelからのデータコピペによる貼り付けやCSVインポートするとDateTimeの仕様である、ミリ秒が0,3,7に丸められてInsertされてしまう気がします。

    https://learn.microsoft.com/ja-jp/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-ver17

    ただ、できれば貼り付けやCSVで取り込めると便利なので助かります。

    #32730 返信
    松原正和
    キーマスター

    araiさんこんにちは。
     
    はい自分の環境でも、再現しました。利用しているライブラリの制約か何かだと思われますが、ちょっとよくわかりません。修正可能か調査します。

    #32764 返信
    arai
    ゲスト

    返信ありがとうございます。気長にお待ちしてます

    #34533 返信
    松原正和
    キーマスター

    arai さんこんにちは。
     
    自分も初めて知ったのですが、SQL Server の DateTime 型を使っている場合は1/300秒でしか時刻を管理できないため、ミリ秒の最後の桁は0,3,7のいずれかになってしまうそうです。
     
    対して、DateTime2は、100ナノ秒まで扱えるようなのでこのような問題は発生しないようです。(A5:SQL Mk-2がミリ秒でしか時刻を扱えない制約があります)

    自分は、datetime型で検証していたのですが、arai さんの環境は datetime 型になっていたということはないでしょうか?

    #35684 返信
    arai
    ゲスト

    返信遅くなりました。

    これですが、私もDateTime型を最初つかっていて、なんかおかしい事に気が付いて調べたところ精度が悪くて「今はDateTime2が主流だよ」っていうのを知った次第です。そのため、サーバ側はDateTime2型で全部置き換えた後で上記の話でした。

    なぜ気が付いたかと言えば、DateTime2に置き換えた後にテーブルからエクスポートしたエクセルのデータを編集し、フラグを戻して再度貼り付けた時に変な差分がでたためです。

    そういう意味ではテーブルのデータをExcelで吐き出すときはちゃんと格納されているミリ秒で出力されますが、それを貼り付けで登録すると丸めされてしまう、みたいな感じです。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
返信先: SQLServerのDateTime2
あなたの情報:




コメントは受け付けていません。