SQL Server 中 关于时间 类型的区别
datedatetimedatetime2(7)datetimeoffset(7)timetimestamp...
date datetime datetime2(7) datetimeoffset(7) time timestamp
展开
展开全部
直接从每个类型定义就可以看出区别:
date、time、datetime三个类型直接从意思上可以理解,date是日期,time是时间,datetime是日期跟时间。“()”里面的数字是表示长度。
datetime2数据类型,类似于之前的datetime类型,不过其精度比较高,可以精确到小数点后面7位(100ns);
datetimeoffset数据类型,加入了时区偏移量部分,时区偏移量表示为 [+|-] HH:MM。 HH 是范围从 00 到 14 的 2 位数,表示时区偏移量的小时数。 MM 是范围从 00 到 59 的 2 位数,表示时区偏移量的附加分钟数。 时间格式支持到最小 100 毫微秒。 必需的 + 或 - 符号指示在 UTC(通用协调时间或格林尼治标准时间)中是加上还是减去时区偏移量以获取本地时间。使用示例:
'2008-08-08 08:08:08.0 +8:00'
timestamp
timestamp 这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp 一般用作给表行加版本戳的机制。存储大小为 8 字节。
date、time、datetime三个类型直接从意思上可以理解,date是日期,time是时间,datetime是日期跟时间。“()”里面的数字是表示长度。
datetime2数据类型,类似于之前的datetime类型,不过其精度比较高,可以精确到小数点后面7位(100ns);
datetimeoffset数据类型,加入了时区偏移量部分,时区偏移量表示为 [+|-] HH:MM。 HH 是范围从 00 到 14 的 2 位数,表示时区偏移量的小时数。 MM 是范围从 00 到 59 的 2 位数,表示时区偏移量的附加分钟数。 时间格式支持到最小 100 毫微秒。 必需的 + 或 - 符号指示在 UTC(通用协调时间或格林尼治标准时间)中是加上还是减去时区偏移量以获取本地时间。使用示例:
'2008-08-08 08:08:08.0 +8:00'
timestamp
timestamp 这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp 一般用作给表行加版本戳的机制。存储大小为 8 字节。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以SQLServer2008为例
日期时间类型
date:日期
time:时间
datetime:时间+日期,有效时间范围1753/1/1~9999/12/31,精确到3.33ms。
datetime2[(n)]:是精度可以改变的时间+日期,当然是指改变时间的精度啦
smalldatetime:结果类似于datetime,但是还是有区别的,smalldatetime的有效时间范围1900/1/1~2079/6/6,精确到分钟。
datetimeoffset
DATE
2017-09-19
TIME
09:05:09.2670000
DATETIME
9 19 2017 9:05AM
DATETIME2可以设置精度
DATETIME2
2017-09-19 09:05:09.2670000
DATETIME2(5)
2017-09-19 09:05:09.26700
SMALLDATETIME
9 19 2017 9:05AM
DATETIMEOFFSET
2017-09-19 09:05:09.2670000 +00:00
输出上面的源码
DECLARE @dt AS DATE
SET @dt=GETDATE()
PRINT 'DATE';
PRINT @dt;
/*2017-09-19*/
DECLARE @dt2 AS TIME
SET @dt2=GETDATE()
PRINT 'TIME';
PRINT @dt2;
/*08:49:53.7830000*/
DECLARE @dt3 AS DATETIME
SET @dt3=GETDATE()
PRINT 'DATETIME';
PRINT @dt3;
/*9 19 2017 8:50AM*/
PRINT 'DATETIME2可以设置精度';
DECLARE @dt4 AS DATETIME2
SET @dt4=GETDATE()
PRINT 'DATETIME2';
PRINT @dt4;
/*2017-09-19 09:16:03.6300000*/
DECLARE @dt5 AS DATETIME2(5)
SET @dt5=GETDATE()
PRINT 'DATETIME2(5)';
PRINT @dt5;
/*2017-09-19 08:53:03.63000*/
DECLARE @dt7 AS SMALLDATETIME
SET @dt7=GETDATE()
PRINT 'SMALLDATETIME';
PRINT @dt7;
/*9 19 2017 8:55AM*/
DECLARE @dt8 AS DATETIMEOFFSET
SET @dt8=GETDATE()
PRINT 'DATETIMEOFFSET';
PRINT @dt8;
/*2017-09-19 08:55:54.5770000 +00:00*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询