SQL Server 2008数据类型:Datetime、字符串、自定义及更多(一)

日期: 2008-11-10 作者:SearchSQLServer.com翻译:April 来源:TechTarget中国 英文

日期和时间数据类型   当你需要存储日期或时间值时,SQL Server就会提供六种数据类型。懂得用哪种数据类型很重要,因为每个日期和时间数据类型所有的精确性都有些许不同,但是在你计算精确时间和持续时间时它们就有很大的差别了。我们依次看看。   Datetime和Smalldatetime数据类型能够存储各种文本形式的日期和时间数据。

它们之间的不同之处就是各自能存储的值的范围。Datetime能够存储从1753年1月1日到9999年12月31日之间的值,并且还能精确到3.33毫秒。相反,smalldatetime只能存储从1900年1月1日至2079年6月6日之间的日期值,还只能精确到1分钟。……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

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

日期和时间数据类型

  当你需要存储日期或时间值时,SQL Server就会提供六种数据类型。懂得用哪种数据类型很重要,因为每个日期和时间数据类型所有的精确性都有些许不同,但是在你计算精确时间和持续时间时它们就有很大的差别了。我们依次看看。

  Datetime和Smalldatetime数据类型能够存储各种文本形式的日期和时间数据。它们之间的不同之处就是各自能存储的值的范围。Datetime能够存储从1753年1月1日到9999年12月31日之间的值,并且还能精确到3.33毫秒。相反,smalldatetime只能存储从1900年1月1日至2079年6月6日之间的日期值,还只能精确到1分钟。就存储而言,datetime需要8个字节,而smalldatetime只需要4个字节。

  日期和时间

  现在SQL Server 2008里的新数据类型,能将传统的日和时间数据类型的日期部分和时间部分分开。从字面上来理解,它们是两种数据类型进行的说明:日期部分(月、日和年),或者是时间部分(小时、分钟、秒和纳秒)。因此,如果有必要的话,你就只能在列中存储其中的一部份。
 
  日期数据类型的有效值的范围和datetime数据类型的有效值范围一样,也就是说日期型数据类型的值包括1753年1月1日至9999年12月31日。从存储的立场看来,日期型数据类型只需要占用3个字节大小,字符长度为10。

  时间型数据类型包括从00:00:00.0000000到23:59:59.9999999之间的值,能够包括8个字符(hh:mm:ss)至16个字符(hh:mm:ss:nnnnnnn),代表小数秒。例如,13:45:25.5从字面理解就是1:45:25加上半秒。你可以指定从0到7之间时间数据类型的刻度、指定你可以在小数秒中使用多少个数字。时间数据类型的最多需要5个字节来存储。

  Datetime2

  SQL Server2008 中的另一种新数据类型。它和原datetime数据类型很相近,只是datetime2结合了时间数据类型的精度和刻度选项。你可以在0到7之间指定刻度,这取决于你想不想划分和存储。这种数据类型的存储大小为8个字节,精度假定为7。

  Datetimeoffset

  SQL Server 2008中最后一种新增的日期和时间数据类型就是datetimeoffset。这是一种标准的日期和时间数据类型,和datetime2相似(因为它能够存储精度)。另外,datetimeoffset还能够存储加减14小时的偏移量。这在应用软件中很有用,当你想存储日期和时间以及相关的偏移量,如多个时区。Datetimeoffset的存储所需空间为10个字节。

  字符串数据类型

  存储字符串和字符数据时,选项和变量很复杂。不论你是否要存储单个字母还是《战争与和平》的整篇文章,SQL Server提供了字符串型数据类型。幸运的是,如果你知道现有字符串数据类型,那你就可以直接选择正确的一项。

  Char和Varchar数据类型

  Char和Varchar数据类型可能是最常用的字符串数据类型。它们都是用来存储标准的、非统一码的文本数据。二者之间的区别就在于数据存储。在这两种情况下,你必须指定一个长度并定义列为char或varchar。该长度设定了该列能够存储的字符个数限制。

  Char数据类型在存储时需要的字节个数和你之前指定的长度一样。如果有一个char(20),即使你在列中只存储一个5个字符的词,你也需要20个字节存储。如果存储varchar,存储空间大小通常是你存储的实际字符数加上2个字节。所以varchar(20)以及一个5个字符的单词将占用7个字节的空间。另外的2个字节包括SQL Server的size reference。每种类型长度可以包括8000个字符。

  什么时候选择它们其中的一种类型呢?如果单凭经验,就是党所有的数据都有相同的长度时就用char,当数据发生了很大的变化时,就用varchar。以下是最佳存储规则。
另一种技巧就是对于较短的列避免使用varchar。我们已经了解了数据库是用varchar(2)列的情况,其结果就是浪费空间。假设你的表中有100行,每个表都包括一个varchar(2)列。假定所有的列都是NULL,那你还需要2个字节的存储空间。所以,没有存储任何数据,你就已经占用了和用char(2)一样多的空间。

  第三种特殊的varchar函数就是最大长度选项。当你指定长度的最大值时,varchar列就能存储多达2^31–1字节的数据,大约为2兆个字节或2GB的字符数据。如果你认为这还不算多,那就请你打开文本编辑器开始输入,直到能够称一个2GB的文件为止。接下来就是等待。有很多信息可以填满单个列。在2005版本中增加了Varchar(max),它也就取代了之前SQL Server版本中的文本数据类型。

翻译

April
April

相关推荐