星期五, 4月 04, 2014

[SQL] smalldatetime 和 datetime

要把工業機台產生的 txt 檔案內容,塞進 SQL Server 2005,該 Table 是把 smalldatetime 欄位設為 Primary Key,塞資料時出現違反 Primary Key 的錯誤訊息

在 C# Console 內把資料秀出來檢查,資料都是唯一的

[SQL] smalldatetime 和 datetime-1


故意把 Table 內的 Primary Key 拿掉,資料塞進來後發現,秒都不見啦,這就是違反 Primary Key 的主因啦

[SQL] smalldatetime 和 datetime-2

故意把欄位資料型態從 smalldatetime 改為 char(20) 發現秒是存在的

[SQL] smalldatetime 和 datetime-3

下 T-SQL 語法把 char 轉為 smalldatetime,秒又歸零啦,到此很確定是資料型態 smlldatetime 的問題啦

[SQL] smalldatetime 和 datetime-4

查閱 MSDN smalldatetime 說明,才發現 smalldatetime 的精確度只到 "分" 而以,把欄位資料型態轉為 datetime,精確度到 "3.33毫秒",再把資料篩進來,資料就正確啦

[SQL] smalldatetime 和 datetime-4-5

smalldatetime 和 datetime 整理
資料型態範圍精確度
datetime1753年1月1日到9999年12月31日3.33 毫秒
smalldatetime1900年1月1日到2079年6月6日

第一次用 C#,一直以為是 ADO.NET 的問題導致秒被裁掉,後來發現問題點還是在較熟悉的 SQL Server 身上,>.< ~~

沒有留言:

張貼留言