SQL Server 2005的DATETIME和SMALLDATETIME基础(一)

日期: 2009-01-14 作者:Robert Sheldon翻译:曾少宁 来源:TechTarget中国 英文

理解SQL Server的日期/时间数据类型是有一定难度的,尤其是混合使用TIMESTAMP的时候。在关于日期/时间的这一系列的第一部分,你将了解到关于数据是如何存储在DATETIME和SMALLDATETIME的基础知识,以及大致地了解TIMESTAMP数据类型——它经常与两种主要的日期/时间数据类型相混淆。   在SQL Server 2005使用日期/时间值有时候会很混淆。因为日期/时间数据类型同时存储日期和时间值,而这些值的操作并不总是一个简单的过程,或者看起来不简单的。

  当操作这类数据时,对于这些数据类型有一个基本的了解是很有重要的。在本文中,我将介绍SQL Server中的两种……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

理解SQL Server的日期/时间数据类型是有一定难度的,尤其是混合使用TIMESTAMP的时候。在关于日期/时间的这一系列的第一部分,你将了解到关于数据是如何存储在DATETIME和SMALLDATETIME的基础知识,以及大致地了解TIMESTAMP数据类型——它经常与两种主要的日期/时间数据类型相混淆。

  在SQL Server 2005使用日期/时间值有时候会很混淆。因为日期/时间数据类型同时存储日期和时间值,而这些值的操作并不总是一个简单的过程,或者看起来不简单的。

  当操作这类数据时,对于这些数据类型有一个基本的了解是很有重要的。在本文中,我将介绍SQL Server中的两种基本的日期/时间数据类型——DATETIME和SMALLDATETIME,以及数据是如何在这两种类型中存储的。另外,我还将概括介绍TIMESTAMP数据类型,这样你就可以了解到它与两种日期/时间数据类型的不同。

  SQL Server的DATETIME数据类型

  毫无疑问,DATETIEM数据类型对你的应用是最有用的。DATETIME字段(或一个变量)中的值是以两个4位整型存储的。第一个整型表示日期,而第二个整型表示时间。

  我们是从基准日期1900年1月1日开始的计算日期的整数的。整数表示该日期之前或之后的天数。因此,DATETIME数据类型仅仅支持由4位范围整数表示的日期。这就意味着DATETIME字段的一个日期必须处于1735年1月1日到9999年12月31日之间。

  第二个在DATETIME值的整数,即时间整数,存储了午夜后的1/300-秒单位的数字。这就意味着时间是以毫秒为单位存储的,并精确到3.33毫秒。因此,当你在DATETIME字段中插入一个值,SQL Server将把时间转换成.000、.003或.007秒。下面的表显示了SQL Server是圆整时间值的几个例子:

Time example

Rounded to:

10:10:10.989
10:10:10.990
10:10:10.991

10:10:10.990

10:10:10.992
10:10:10.993
10:10:10.994

10:10:10.993

10:10:10.995
10:10:10.996
10:10:10.997
10:10:10.998

10:10:10.997

10:10:10.999

10:10:11.000

 这个表的时间是以小时、分钟、秒钟顺序列出的,并且适当地将秒精确到毫秒。

  正如你所看到的,DATETIME字段中的两个整数一起表示一个特定日期的某一特定时间。当你从一个DATETIME字段中检索一个值时,它将日期和时间显示为一系列的数字。比如,下面的Transact-SQL 语句就是从DatabaseLog 表中的PostTime字段检索数据,这个表也是AdventureWorks示例数据库中的一部分:


SELECT PostTime FROM dbo.DatabaseLog
WHERE DatabaseLogID = 1

  PostTime字段是配置为DATETIME数据类型的。当你在SQL Server Management Studio中检索值时,所检索到的值在默认情况下以下面的格式返回:


PostTime
-----------------------
2005-10-14 01:58:27.567
(1 row(s) affected)

  注意,日期显示首先是年(2005),接着是月(10),然后是日(14)。然后日期后面是时间,也就是1小时、58分和27.567秒。值作为一个整体,它所指的是2005年10月14日,大约是凌晨1:58的日期和时间。

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐