日期和时间数据类型
下表列出了 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 ( ) | sql Server 的实例正在该计算机上运行.日期和时间作为 UTC 时间(通用协调时间)返回. | 不具有确定性 |
精度较低的系统日期和时间函数
函数 | 语法 | 返回值 | 返回数据类型 | 确定性 | ||
CURRENT_TIMESTAMP | CURRENT_TIMESTAMP | 返回包含计算机的日期和时间的datetime2(7) 值,sql Server的实例正在该计算机上运行.时区偏移量未包含在内. | datetime | 不具有确定性 | ||
GETDATE | GETDATE ( ) | GETUTCDATE | GETUTCDATE ( ) | sql Server的实例正在该计算机上运行.日期和时间作为 UTC 时间(通用协调时间)返回. | datetime |
不具有确定性 |
函数 | 语法 | 返回值 | 返回数据类型 | 确定性 | ||
DATENAME | DATENAME ( datepart, date ) | 返回表示指定日期的指定datepart 的字符串. | nvarchar | 不具有确定性 | ||
DATEPART | DATEPART ( datepart,courier">返回表示指定 date 的指定datepart 的整数. | int | DAY | DAY ( date ) | 返回表示指定 date 的"日"部分的整数. | 具有确定性 |
MONTH | MONTH ( date ) | 返回表示指定 date 的"月"部分的整数. | YEAR | YEAR ( date ) | 返回表示指定 date 的"年"部分的整数. | 具有确定性 |
函数 | 语法 | 返回值 | @H_502_1134@返回数据类型确定性 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DATEDIFF | DATEDIFF ( datepart ,startdate , enddate ) | 返回两个指定日期之间所跨的日期或时间 datepart 边界的数目. | @H_502_1134@int用来修改日期和时间值的函数
|