解密SQL Server中的日期/时间数据类型
在SQL Server中使用日期/时间值有时候会很模糊、会觉得很迷茫。因为日期/时间数据类型同时存储日期和时间值,而这些值的操作并不总是一个简单的过程,或者看起来不简单的。
目录:
-
>SQL Server 2005的DATETIME和SMALLDATETIME基础
理解SQL Server的日期/时间数据类型是有一定难度的,尤其是混合使用TIMESTAMP的时候。在关于日期/时间的这一系列的第一部分,你将了解到关于数据是如何存储在DATETIME和SMALLDATETIME的基础知识,以及大致地了解TIMESTAMP数据类型——它经常与两种主要的日期/时间数据类型相混淆。
-
>SQL Server中日期/时间值到字符类型的数据转换
在本文中,我将解释如何将DATETIME和SMALLDATETIME数据类型转换成字符数据,以及如何将字符数据转换成日期/时间数据。具体来说,本章将介绍Transat-SQL支持的两个内置SQL Server数据转换方法——隐式转换和显式转换。在前一篇的技巧《SQL Server 2005的DATETIME和SMALLDATETIME数据基础》中,我已经阐述了SQL Server是如何使用DATETIME和SMALLDATETIME数据类型来存储日期/时间数据的。在本文中,我将解释日期/时间数据是如何转换成字符数据和字符数据是如何转换成日期/时间数据以及Transact-SQL是如何支持这两种执行这些数据转换的方法——隐式转换和显式转换。
-
>正确使用SQL Server的datetime函数
Transact-SQL包含一组函数可以用于检索当前的日期和时间或一个DATETIME或SMALLDATETIME值的某个部分。比如,你可以在DATETIME值中提取日、月或年以及季度、周、小时甚至毫秒。在本文中,我将对这些函数进行阐述并举例说明如何使用SQL Server中的这些函数来查询数据的。注意,本文假定你已经具备了一定的T-SQL、DATETIME和SMALLDATETIME数据类型的知识。想获得更多这些类型的信息,你可以阅读这一系列的第一部分“SQL Server 2005的DATETIME和SMALLDATETIME基础”。
-
>使用DATEADD和DATEDIFF计算SQL Server的DATETIME值
在SQL Server数据库中,DATETIME和SMALLDATETIME值是以整数存储的。然而,与整数不同的是,它们不能直接地进行数学运算。尽管如此,有时候还是需要在日期/时间值中添加或减去一个时间间隔。比如,你可能想在一值上加一些月数或天数,或者甚至可能是小时数。你甚至可能想比较两个日期/时间值以便确定它们之间的时间间隔,如相差的天数或年数。为了简化这些类型的计算,Transact-SQL支持两个重要的日期/时间方法:DATEADD和DATEDIFF。
-
>SQL Server 2008中新的datetime数据类型
在这一技巧系列中我讲了SQL Server的datetime值的很多方面。我所举的这些例子都是用在SQL Server 2005中的,尽管我在那些文章中讨论的东西在SQL Server 2008中也同样适用。在这篇技巧中,我将进一步讨论datetime值,并特别强调能够用在SQL Server2008中新的datetime数据类型。它们包括DATE、TIME、DATETIME2以及DATETIMEOFFSET类型,因为这些类型T-SQL语言都支持。