日期和时间数据类型
下表列出了 Transact-sql的日期和时间数据类型.
数据类型 |
格式 | 范围 | 精确度 | 存储大小(以字节为单位) | 用户定义的秒的小数精度 | 时区偏移量 | ||||||||||||||||||
time |
hh:mm:ss[.nnnnnnn] | 00:00:00.0000000到 23:59:59.9999999 | 100纳秒 | 3到 5 | 有 | 无 | ||||||||||||||||||
date | YYYY-MM-DD | 0001-01-01到 9999-12-31 | 1天 | 3 | 无 | smalldatetime | YYYY-MM-DD hh:mm:ss | 1900-01-01到 2079-06-06 | 1分钟 | 4 | datetime | YYYY-MM-DD hh:mm:ss[.nnn] | 1753-01-01到 9999-12-31 | 0.00333秒 | 8 | datetime2 | YYYY-MM-DD hh:mm:ss[.nnnnnnn] | 0001-01-01 00:00:00.0000000到 9999-12-31 23:59:59.9999999 | 6到 8 | datetimeoffset | YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm | 0001-01-01 00:00:00.0000000到 9999-12-31 23:59:59.9999999(以 UTC时间表示) | 8到 10 | 有 |
注意:Transact-sql rowversion数据类型不是日期或时间数据类型.timestamp是rowversion的同义词,但不推荐使用.
日期和时间函数
所有系统日期和时间值均得自运行 sql Server实例的计算机的操作系统.
精度较高的系统日期和时间函数
sql Server 2008使用GetSystemTimeAsFileTime() Windows API来获取日期和时间值.精确程度取决于运行 sql Server实例的计算机硬件和 Windows版本.此 API的精度固定为 100纳秒.可通过使用GetSystemTimeAdjustment() Windows API来确定该精确度.
语法 | 返回值 | 返回数据类型 | 确定性 | ||||
SYSDATETIME | SYSDATETIME () | 返回包含计算机的日期和时间的datetime2(7)值,sql Server的实例正在该计算机上运行.时区偏移量未包含在内. | datetime2(7) | 不具有确定性 | |||
SYSDATETIMEOFFSET | SYSDATETIMEOFFSET ( ) | 返回包含计算机的日期和时间的datetimeoffset(7)值,sql Server的实例正在该计算机上运行.时区偏移量包含在内. | datetimeoffset(7) | SYSUTCDATETIME | SYSUTCDATETIME ( ) | ottom:rgb(163,sql Server的实例正在该计算机上运行.日期和时间作为 UTC时间(通用协调时间)返回. | 不具有确定性 |
精度较低的系统日期和时间函数
datetime | GETDATE | GETDATE ( ) | GETUTCDATE | GETUTCDATE ( ) | 不具有确定性 |
DATENAME (datepart,date ) | 返回表示指定日期的指定datepart的字符串. | nvarchar | DATEPART | DATEPART (datepart,courier">返回表示指定date的指定datepart的整数. | int | DAY | DAY (date ) | 返回表示指定date的"日"部分的整数. | 具有确定性 |
MONTH | MONTH (date ) | 返回表示指定date的"月"部分的整数. | YEAR | YEAR (date ) | 返回表示指定date的"年"部分的整数. | 具有确定性 |
DATEDIFF (datepart,startdate,enddate ) | 返回两个指定日期之间所跨的日期或时间datepart边界的数目. | 用来修改日期和时间值的函数
|