DATETIME 数据类型
SQL Server支持两中日期与时间相关的数据类型:DateTime & Small DateTime
DATETIME 储存格式
DateTime并非按照年、月、日、小时、分、秒、毫秒分别储存的,事实上,DateTime采用了两个4Byte的整数来表示,SmallDateTime采用了两个2Byte的整数来表示。
DateTime的前4Byte表示1900年1月1日至当前时间的总天数,后4Byte表示当天午夜之后经过了多少毫秒,最小度量单位为3⅓毫秒。DateTime支持的时间范围是从1753年1月1日至9999年12月31日。DateTime最早支持到1753年1月1日是源于Julian公历。
SmallDateTime的前2Byte表示1900年1月1日至当前时间的总天数,后2Byte表示当天午夜之后经过了多少分钟。SmallDateTime支持的时间范围是从1900年1月1日至2079年6月6日。
DATETIME 操作方法
表述方法
SQL Server中支持使用者用字符串的形式表示时间并且隐形地转换成DATETIME类型。需要注意的是,DATETIME比String类型具有更多的优先级,因此当一个运算式中出现DATETIME和String两种数据结构时,String将被隐式地转换成DATETIME。
DATETIME的字符串表述会根据初始登录语言的设置来决定,并且可以通过SET LANGUAGE来修改语言以及通过SET DATE-FORMAT来修改语言表述格式。
当然还可以通过CONVERT函数来显示地转换DATETIME,具体方法如下链接:http://msdn.microsoft.com/zh-cn/library/ms187928.aspx。
四舍五入
当一个字符串被转换成为DATETIME时,该时间会被近似到DATETIME能表述的某个值(最小度量为三百分之一秒);当一个字符串被转换成为SmallDateTime时,该时间会被近似到SmallDateTime能表述的某个值(最小度量为一分钟)。当DATETIME被转换成为字符串时,时间会被近似到最接近的毫秒。
DATETIME函数
DATEADD用于向某个DATETIME上增加一定时间:http://msdn.microsoft.com/zh-cn/library/ms186819.aspx。
DATEDIFF用于计算两个时间之间的间隔:http://msdn.microsoft.com/zh-cn/library/ms189794.aspx。
DATEPART用于返回某个DATETIME部分值:http://msdn.microsoft.com/zh-cn/library/ms174420.aspx。
DATENAME用于返回某个DATETIME部分名称:http://msdn.microsoft.com/zh-cn/library/ms174395.aspx。
GETDATE用于返回当前系统时间: http://msdn.microsoft.com/zh-cn/library/ms188383.aspx。
GETUTCDATE用于返回当前UTC时间: http://msdn.microsoft.com/zh-cn/library/ms178635.aspx。
CURRENT_TIMESTAMP用于返回ANSI编码的系统当前时间: http://msdn.microsoft.com/zh-cn/library/ms188751.aspx。
其他时间函数: http://msdn.microsoft.com/zh-cn/library/ms186724.aspx。