日期和时间数据类型
下表列出了 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-DDhh:mm:ss |
1900-01-01 到 2079-06-06 |
1 分钟 |
4 |
datetime |
YYYY-MM-DDhh:mm:ss[.nnn] |
1753-01-01 到 9999-12-31 |
0.00333 秒 |
8 |
datetime2 |
YYYY-MM-DDhh:mm:ss[.nnnnnnn] |
0001-01-01 00:00:00.0000000 到 9999-12-3123:59:59.9999999 |
6 到 8 |
datetimeoffset |
YYYY-MM-DDhh: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 的同义词,但不推荐使用.
日期和时间函数
所有系统日期和时间值均得自运行sqlServer 实例的计算机的操作系统.
精度较高的系统日期和时间函数
sql Server 2008 使用 GetSystemTimeAsFileTime()Windows API 来获取日期和时间值.精确程度取决于运行 sqlServer 实例的计算机硬件和Windows 版本.此API 的精度固定为 100 纳秒.可通过使用GetSystemTimeAdjustment() Windows API 来确定该精确度.
语法 |
返回值 |
返回数据类型 |
确定性 |
||||
SYSDATETIME |
SYSDATETIME() |
返回包含计算机的日期和时间的 datetime2(7) 值,sqlServer 的实例正在该计算机上运行.时区偏移量未包含在内. |
datetime2(7) |
不具有确定性 |
|||
SYSDATETIMEOFFSET |
SYSDATETIMEOFFSET () |
返回包含计算机的日期和时间的 datetimeoffset(7) 值,sqlServer 的实例正在该计算机上运行.时区偏移量包含在内. |
datetimeoffset(7) |
SYSUTCDATETIME |
SYSUTCDATETIME () |
sqlServer 的实例正在该计算机上运行.日期和时间作为UTC 时间(通用协调时间)返回. |
不具有确定性 |
精度较低的系统日期和时间函数
语法 |
返回值 |
返回数据类型 |
确定性 |
|||
CURRENT_TIMESTAMP |
CURRENT_TIMESTAMP |
sqlServer 的实例正在该计算机上运行.时区偏移量未包含在内. |
datetime |
不具有确定性 |
||
GETDATE |
GETDATE () |
GETUTCDATE |
GETUTCDATE () |
sqlServer 的实例正在该计算机上运行.日期和时间作为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 的"年"部分的整数. |
具有确定性 |
语法 |
返回值 |
返回数据类型 |
确定性 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DATEDIFF |
DATEDIFF ( datepart, startdate,enddate ) |
返回两个指定日期之间所跨的日期或时间 datepart边界的数目. |
int |
|