T-SQL数据类型的细微差别(一)

日期型:
   SQL Server的日期种类:日期时间型和小日期时间型,日期和时间在SQL Server中数据是在一起的。日期时间型的列需要8个存储字节,可以存储从1753年1月1日到9999年12月3日,小日期时间型的列需要4个字节,可以从1900年1月1日到2079年6月6日,日期时间型的列存储日期和时间精确到百分之三秒。小日期时间型存储时间限制在分钟级,如果想存储在一个不带时间的日期,只需忽略列或者变量的时间部分。默认时间为00:00:00(午夜)。如果需要一个不带日期时间,就忽略日期部分默认为1900年1月1日,是因为这个日期是SQL Server的参考日期,SQL Server所有的日期存为1900年1月1日或者从这一天开始算起。日期时间变量的日期占前4个字节,时间占后4个字节。日期时间型和小日期时间型的列的时间都是从午夜开始重新计算毫秒数。关于日期时间型列的毫秒存储方式比较奇怪,即使精确度限制为3.33都是已0,3,7结尾的,因为日期的时间四舍五入。
  SELECT CAST('01-01-39' AS DATETIME) AS DadsBirthDate答案是2039年1月1日,因为在SQL Server中有内部的世纪窗口,用以控制两位年份如何解释。
日期函数:
DATEDIFF函数可以得到两个指定的日期或时间单元的时间差。
GETDATE函数获得当前日期时间。
DATEPART,YEAR,MONTH,DAY可以给定日期中抽取某一部分。
DATEPART函数可以以整数形式返回星期中的第几天,年中的第几个星期和年中的第几天,用简单算术运算除了能对日期进行加或减一个给定数,还可用一个日期减去另一个日期得到两者的差,但是这种方法要谨慎使用,一个日期包括了时间,等于或多于12个小时的时间部分就被认为一天,使用GETDATE返回的日期中的时间很危险。

以上内容是《Transact-SQL权威指南》一书的读书笔记,感谢作者KEN HENDERSON 和 译者 健莲科技 中国电力出版社 为我带来这么经典的T-SQL书籍。
posted @ 2006-12-13 20:53  斯伯内德  阅读(487)  评论(0编辑  收藏  举报