sql server2008中新日期数据类型DATITIME2
创始人
2024-07-13 15:11:46
0

sql server2008在之前旧的版本的数据类型基础上,增加了一些新的日期数据类型,下文就将为您介绍sql server2008中新日期数据类型DATITIME2,希望对您学习 sql server2008能够有些帮助。

sql server2008中的新日期数据类型DATETIME2数据类型是对DATETIME数据类型的一个扩展,该新的数据类型扩展了可以接受日期的范围和在日期/时间值的时间部分添加附加精度。DATETIME2列支持日期从0001-01-01到9999-01-01。扩大的日期范围现在允许你存储更早的日期而无需使用一些创造性的编码算法。

sql server2008中DATETIME2中的时间部分的精确度依赖于你如何定义DATETIME2列,时间部分能够存储一个只有小时、分钟和秒的时间值,或者它能够支持在不同的精确定存储微秒,最多有7位小数,微妙可以向下精确到100纳秒。

使用sql server2008中的DATETIME2数据类型你可以使用不同的长度字符存储和显示日期,从19(YYYY-MM-DD hh:mm:ss)到27(YYYY-MM-DD hh:mm:ss.0000000)。这依赖于不同数量的精度存储需要一定的磁盘开销。在DATETIME2列中存储不同的精度时需要在定义列时指定一个长度,我们可以像DATETIME2(X)来指定精度,其中X代表的是精度长度,可以从0到7。显示长度和存储空间的关系如下表所示:

TerryLee_0001 

正如上表所示,DATETIME2列存储一个日期/时间值的磁盘空间开销是从6-8字节,它取决于你想要保留多少时间精度。

DATETIME2(3)格式等同于我们在旧版本的SQL Server中使用的DATETIME格式,但是使用DATETIME2(3)可以支持精确度到1毫秒,而旧版本中的DATETIME格式只能精确到3.33毫秒。注意DATETIME2(3)只需要7字节的磁盘开销,而DATETIME格式需要8个字节,现在,这意味着你可以存储与较早发布的SQL Server相同的日期和时间值并且能够节省磁盘空间。

使用DATETIME(7)格式允许你存储日期类型向上精确到100纳秒,尽管增加了精度,但是你不能保证在一张表中的一个时间值是***的,当使用DATETIME(7)格式时仍然可能在同一张表中存储两条具有相同时间的不同的记录。 #p#

此处是一个如何使用DATETIME2不同的精度值来显示不同的时间格式:

  1. DECLARE @D0 datetime2(0) = '2008-05-10 06:59:11.1234567';  
  2. DECLARE @D1 datetime2(1) = '2008-05-10 06:59:11.1234567';  
  3. DECLARE @D2 datetime2(2) = '2008-05-10 06:59:11.1234567';  
  4. DECLARE @D3 datetime2(3) = '2008-05-10 06:59:11.1234567';  
  5. DECLARE @D4 datetime2(4) = '2008-05-10 06:59:11.1234567';  
  6. DECLARE @D5 datetime2(5) = '2008-05-10 06:59:11.1234567';  
  7. DECLARE @D6 datetime2(6) = '2008-05-10 06:59:11.1234567';  
  8. DECLARE @D7 datetime2(7) = '2008-05-10 06:59:11.1234567';  
  9. PRINT @D0;  
  10. PRINT @D1;  
  11. PRINT @D2;  
  12. PRINT @D3;  
  13. PRINT @D4;  
  14. PRINT @D5;  
  15. PRINT @D6;  
  16. PRINT @D7; 

当运行上述代码时将会得到如下结果:

  1. 2008-05-10 06:59:11  
  2. 2008-05-10 06:59:11.1  
  3. 2008-05-10 06:59:11.12  
  4. 2008-05-10 06:59:11.123  
  5. 2008-05-10 06:59:11.1235  
  6. 2008-05-10 06:59:11.12346  
  7. 2008-05-10 06:59:11.123457  
  8. 2008-05-10 06:59:11.1234567 

此处你可以看到,不同数量的精度显示不同的微秒,注意当我在DECLARE语句中设置默认值时DATETIME(4), DATETIME(5) 和DATETIME(6)做了一些舍入。

使用sql server2008中的DATETIME2现在可以让你存在日期和时间在一列时有了更多的选择,现在如果你只想存储一个日期和精确到秒的时间,你可以使用DATETIME(0)来完成此需求而无需编写额外的代码以及浪费昂贵的磁盘开销。

 

 

【编辑推荐】

详解SQL Server分布式查询

sql server2005循环操作实例

为您详解SQL Server中的全局变量

远程连接sql server服务器的方法

SQL Server中不同用户的权限

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
规避非法攻击 用好路由器远程管... 单位在市区不同位置设立了科技服务点,每一个服务点的员工都通过宽带路由器进行共享上网,和单位网络保持联...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
范例解读VB.NET获取环境变... VB.NET编程语言的使用范围非常广泛,可以帮助开发人员处理各种程序中的需求,而且还能对移动设备进行...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...