C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

SQLのCASTについて

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■95260 / inTopicNo.1)  SQLのCASTについて
  
□投稿者/ ファイター (11回)-(2020/07/09(Thu) 09:48:36)

分類:[.NET 全般] 

DECLARE @STIME DATETIME = '2020-07-01 08:05:16.335';
DECLARE @ETIME DATETIME = '2020-07-25 10:16:15.115';
SELECT cast(@STIME as time), cast(@ETIME as time)

結果が以下のように 2msec 増えますが、どうしてでしょうか?

08:05:16.3370000 10:16:15.1170000
引用返信 編集キー/
■95261 / inTopicNo.2)  Re[1]: SQLのCASTについて
□投稿者/ furu (63回)-(2020/07/09(Thu) 10:11:24)
No95260 (ファイター さん) に返信
> 結果が以下のように 2msec 増えますが、どうしてでしょうか?
データベースとか、バージョンとか不明ですが
単にtimeが1msecの精度を持っていないのではないですか?

1msec毎増やした値でやってみると精度がわかると思います。
引用返信 編集キー/
■95262 / inTopicNo.3)  Re[2]: SQLのCASTについて
□投稿者/ Hongliang (1057回)-(2020/07/09(Thu) 10:32:42)
https://docs.microsoft.com/ja-jp/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-ver15
DATETIME型がそういう型だからですね。
ミリ秒まで正確に保持する必要があるならDATETIME型ではなくDATETIME2型を使いましょう。
TIME型は既定で小数点以下7桁まで保持できます。
引用返信 編集キー/
■95263 / inTopicNo.4)  Re[1]: SQLのCASTについて
□投稿者/ 魔界の仮面弁士 (2776回)-(2020/07/09(Thu) 10:38:45)
No95260 (ファイター さん) に返信
> DECLARE @STIME DATETIME = '2020-07-01 08:05:16.335';
> DECLARE @ETIME DATETIME = '2020-07-25 10:16:15.115';
> SELECT cast(@STIME as time), cast(@ETIME as time)

SQL Server でしょうか?


SQL Server の DATETIME 型 … 1/300 秒精度。秒未満は 3 桁精度で、.xx0、.xx3、または .xx7 秒単位に丸められます。
SQL Server の DATETIME2 型 … 100ナノ秒精度。秒未満は 7桁精度です。
SQL Server の SMALLDATE 型 … 分精度。29.998秒以下は切り捨て、29.999秒以上は切上げです。
SQL Server の DATE 型 … 日精度。時刻部は持ちません。
引用返信 編集キー/
■95264 / inTopicNo.5)  Re[3]: SQLのCASTについて
□投稿者/ ファイター (12回)-(2020/07/09(Thu) 11:09:54)
皆さんありがとうございました。

DateTime だけではなく DateTime2 というのがあるんですね。
DateTimeOffset というのもあるみたいですけど
知りませんでした。

ミリ秒が欲しいので DateTime2 で事足ります。


解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ