SQL Server 中 关于时间 类型的区别

datedatetimedatetime2(7)datetimeoffset(7)timetimestamp... date datetime datetime2(7) datetimeoffset(7) time timestamp 展开
 我来答
旅游路上小知识
高粉答主

2020-04-25 · 我是旅行小达人,专注解决旅行中遇到的问题
旅游路上小知识
采纳数:2 获赞数:83093

向TA提问 私信TA
展开全部

1、首先获取当前系统数据库的日期和时间,可以利用函数GETDATE(),select GETDATE();如下图所示。

2、获取当前世界标准时间的日期时间值,利用GETUTCDATE()函数,select GETUTCDATE();如下图所示。

3、然后select DATEADD(DAY,1,'2015-5-11');在指定的时间增加一天。

4、在指定的时间增加两年,select DATEADD(YEAR,2,'2015-03-17')。

5、最后datediff函数计算两个时间相差值,第一个参数是按照单位计算差值,分,小时,秒,天,月,年,都可以。

Miniont
推荐于2017-10-01 · TA获得超过224个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:318万
展开全部
直接从每个类型定义就可以看出区别:
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 字节。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
普实软件
2017-09-19 · 知道合伙人软件行家
普实软件
知道合伙人软件行家
采纳数:1703 获赞数:7396
普实软件ERP专家

向TA提问 私信TA
展开全部

以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*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式