CONVERT的使用方法:
格式: CONVERT(data_type,expression[,style]) 说明: 此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar) 相互转换的时候才用到. 例子: SELECT CONVERT(varchar(30),getdate(),101) now 结果为 now --------------------------------------- 09/15/2001 / style数字在转换时间时的含义如下 ------------------------------------------------------------------------------------------------- Style(2位表示年份) | Style(4位表示年份) | 输入输出格式 ------------------------------------------------------------------------------------------------- - | 0 or 100 | mon dd yyyy hh:miAM(或PM) ------------------------------------------------------------------------------------------------- 1 | 101 | mm/dd/yy ------------------------------------------------------------------------------------------------- 2 | 102 | yy-mm-dd ------------------------------------------------------------------------------------------------- 3 | 103 | dd/mm/yy ------------------------------------------------------------------------------------------------- 4 | 104 | dd-mm-yy ------------------------------------------------------------------------------------------------- 5 | 105 | dd-mm-yy ------------------------------------------------------------------------------------------------- 6 | 106 | dd mon yy ------------------------------------------------------------------------------------------------- 7 | 107 | mon dd,yy ------------------------------------------------------------------------------------------------- 8 | 108 | hh:mm:ss ------------------------------------------------------------------------------------------------- - | 9 or 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM) ------------------------------------------------------------------------------------------------- 10 | 110 | mm-dd-yy ------------------------------------------------------------------------------------------------- 11 | 111 | yy/mm/dd ------------------------------------------------------------------------------------------------- 12 | 112 | yymmdd ------------------------------------------------------------------------------------------------- - | 13 or 113 | dd mon yyyy hh:mi:ss:mmm(24小时制) ------------------------------------------------------------------------------------------------- 14 | 114 | hh:mi:ss:mmm(24小时制) ------------------------------------------------------------------------------------------------- - | 20 or 120 | yyyy-mm-dd hh:mi:ss(24小时制) ------------------------------------------------------------------------------------------------- - | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24小时制) -------------------------------------------------------------------------------------------------smalldatetime不能到秒.
不過它占的空間小.(4位) datetime(8位) 而且兩者的時間範圍不一樣.datetime占8字节,精度3.33毫秒,时间从1753.1.1到9999.12.31
smalldatetime占4字节,精度1分钟,时间从1900.1.1到2079.6.6datetime 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。
文章转载自http://www.zhizihua.com/blog/post/Sql%E4%B8%ADDateTime%E4%BD%BF%E7%94%A8.html