bandariiswear

幽艳纷相竞 秾纤各自奇 虽然春烂漫 也要笔扶持 清人题画诗

导航

SQL SERVER 中的smalldatetime和datetime区别

smalldatetime不能到秒.
不過它占的空間小.(4位)
datetime(8位)
而且兩者的時間範圍不一樣.  

datetime占8字节,精度3.33毫秒,时间从1753.1.1到9999.12.31
smalldatetime占4字节,精度1分钟,时间从1900.1.1到2079.6.6
   
datetime

Date and time data from January 1, 1753, to December 31, 9999, with an accuracy of three-hundredths of a second, or 3.33 milliseconds.

smalldatetime

Date and time data from January 1, 1900, through June 6, 2079, with an accuracy of one minute.

 

 

碰上了這件事,才學到教訓,一直以為smalldatetime和datetime的差別只是在於時間範圍:
smalldatetime的有效時間範圍1900/1/1~2079/6/6
datetime的有效時間範圍1753/1/1~9999/12/31
所以我判斷如果該值不用到太遠的日期範圍,就會使用smalldatetime。
但我忽略了更關鍵的差別,那就是smalldatetime只精準到分,而datetime則可精準到3.33毫秒。
因此,當我怎麼存,秒都是00後,才發現原來是smalldatetime惹的禍,待我將資料型別改成datetime後,秒的部份就可以正常儲存了。

*****************************************************************************************
SQL Server中,smalldatetime只能精确到分钟,而datatime可以精确到3%秒(3.33毫秒)。

smalldatetime占用4个字节,前2个字节存储base date(1900年1月1日)之后的天数。后2个字节存储午夜后的分钟数

datetime占用8个字节,前4个字节存储base date(即1900年1月1日)之前之后的天数,后4个字节存储午夜后的毫秒数

由于datetime的精度是3%秒,这就涉及到小数,毫秒之前可以是冒号,也可以是小数点。使用冒号时表示的意义同时分秒间隔,11:11:11:21表示021毫秒,前面的0省略,而小数点表示的意义同数学上的小数点,如11:11:11.21表示210毫秒,省略的是后面的0。

posted on 2012-11-30 11:03  YEKEYISHUO  阅读(169)  评论(1编辑  收藏  举报