一秒看懂SQL Server 2008日期时间类型区别

来源:互联网 发布:坚果pro2 知乎 编辑:程序博客网 时间:2024/04/30 01:36

一开始学习数据库的基本数据类型,都为其数据类型的种类搞晕。为什么数据库需要那么多的数据类型,一个时间也可以分出6中数据类型。显然老微不是吃饱了撑着。这么做肯定是有目的的。假设当你的公司需要存储超过100万条数据,我们就假设使用int和bigint,int占空间是4字节表示范围是-2^31~2^31-1,也就是32位数据。bigint则是8字节,63位数据,假设我们在使用int足够存储的情况下,某位新用户设置为bigint类型进行存储,那么100万*4字节=3.814697265625MB。现在你也许会觉得不到4M的空间不足以考虑,好,那么我们数据是10亿条呢,而且数据中不可能就只有一列把3.8M*100*N=380M+。废话不多说,把类型分的那么细是肯定有原因的。
让我们从最难的数据类型开始(我觉得是)

日期时间类型

  • date
  • time
  • datetime
  • datetime2
  • smalldatetime
  • datetimeoffset
DATE2015-12-01TIME09:25:09.2670000DATETIME12  1 2015  9:25AMDATETIME2可以设置精度DATETIME22015-12-01 09:25:09.2670000DATETIME2(5)2015-12-01 09:25:09.26700SMALLDATETIME12  1 2015  9:25AMDATETIMEOFFSET2015-12-01 09:25:09.2670000 +00:00

这是输出上面的源码

DECLARE @dt AS DATESET @dt=GETDATE()PRINT 'DATE';PRINT @dt;/*2015-12-01*/DECLARE @dt2 AS TIMESET @dt2=GETDATE()PRINT 'TIME';PRINT @dt2;/*09:12:53.7830000*/DECLARE @dt3 AS DATETIMESET @dt3=GETDATE()PRINT 'DATETIME';PRINT @dt3;/*12  1 2015  9:13AM*/PRINT 'DATETIME2可以设置精度';DECLARE @dt4 AS DATETIME2SET @dt4=GETDATE()PRINT 'DATETIME2';PRINT @dt4;/*2015-12-01 09:16:03.6300000*/DECLARE @dt5 AS DATETIME2(5)SET @dt5=GETDATE()PRINT 'DATETIME2(5)';PRINT @dt5;/*2015-12-01 09:16:03.63000*/DECLARE @dt7 AS SMALLDATETIMESET @dt7=GETDATE()PRINT 'SMALLDATETIME';PRINT @dt7;/*12  1 2015  9:18AM*/DECLARE @dt8 AS DATETIMEOFFSETSET @dt8=GETDATE()PRINT 'DATETIMEOFFSET';PRINT @dt8;/*2015-12-01 09:18:54.5770000 +00:00*/

总结以上,date表示日期,time表示时间,datetime时间+日期
datetime2[(n)]是精度可以改变的时间+日期,当然是指改变时间的精度啦。smalldatetime的结果类似于datetime,但是还是有区别的。
smalldatetime的有效时间范围1900/1/1~2079/6/6
datetime的有效时间范围1753/1/1~9999/12/31,
smalldatetime精确到分钟,datetime精确到3.33ms。

0 0
原创粉丝点击