SQL Server中日期/时间值到字符类型的数据转换(一)

 
   | |

导读:在本文中,作者将解释如何将DATETIME和SMALLDATETIME数据类型转换成字符数据,以及如何将字符数据转换成日期/时间数据。具体来说,本章将介绍Transat-SQL支持……

关键词:SQL Server 日期/时间值 字符型数据

正在加载数据...

【TechTarget中国原创】在本文中,我将解释如何将DATETIME和SMALLDATETIME数据类型转换成字符数据,以及如何将字符数据转换成日期/时间数据。具体来说,本章将介绍Transat-SQL支持的两个内置SQL Server数据转换方法——隐式转换和显式转换。在前一篇的技巧《SQL Server 2005的DATETIME和SMALLDATETIME数据基础》中,我已经阐述了SQL Server是如何使用DATETIME和SMALLDATETIME数据类型来存储日期/时间数据的。在本文中,我将解释日期/时间数据是如何转换成字符数据和字符数据是如何转换成日期/时间数据以及Transact-SQL是如何支持这两种执行这些数据转换的方法——隐式转换和显式转换。

【TechTarget中国原创】

在本文中,我将解释如何将DATETIME和SMALLDATETIME数据类型转换成字符数据,以及如何将字符数据转换成日期/时间数据。具体来说,本章将介绍Transat-SQL支持的两个内置SQL Server数据转换方法——隐式转换和显式转换。在前一篇的技巧《SQL Server 2005的DATETIME和SMALLDATETIME数据基础》中,我已经阐述了SQL Server是如何使用DATETIME和SMALLDATETIME数据类型来存储日期/时间数据的。在本文中,我将解释日期/时间数据是如何转换成字符数据和字符数据是如何转换成日期/时间数据以及Transact-SQL是如何支持这两种执行这些数据转换的方法——隐式转换和显式转换。


  本文的前提是假定你已具备T-SQL和SQL Server应用知识,并且该部分只涉及日期/时间数据与字符数据之间的相互转换。但是,你还可以转换其它类型的数值,如将INT转换为DATETIME。虽然在大多数情况下,你的主要工作是字符到日期/时间的转换。

隐式转换数据

当你插入数据到DATETIME或SMALLDATETIME字段中时,SQL Server会自动尝试将不同类型的数据进行转换。例如,如果你向DATETIME字段中插入CHAR值,SQL Server将对数据作转换——如果该值是一个可以接受的格式。如果你在CHAR栏中插入DATETIME值,SQL Server也将作自动转换。


  让我们来看看几个隐式转换例子以便更好地理解它是如何工作的。为了说明这些转换,我使用了下面的代码在AdventureWorks示例数据库中创建LogInfo表:


USE AdventureWorks
GO
CREATE TABLE dbo.LogInfo 
(
LogID INT PRIMARY KEY, 
LogEvent NVARCHAR(30) NOT NULL, 
Post_DateTime DATETIME NOT NULL, 
Post_SmallDateTime SMALLDATETIME NOT NULL, 
Post_NVarChar NVARCHAR(25) NOT NULL
)

在这个表中包含了三个用于保存日期/时间信息的字段:Post_DateTime、Post_SmallDateTime和Post_NVarChar。字段的名称反映了用于定义字段的数据类型。下面让我们在这些字段中插入数据:


INSERT INTO LogInfo
SELECT DatabaseLogID, [Event], 
PostTime, PostTime, PostTime
FROM dbo.DatabaseLog

这个语句将从DatabaseLog表(在AdventureWorks数据库)中获取数据,然后插入到LogInfo表中。在源表的PostTime字段是DATETIME数据类型的。注意,这个字段是用于将数据插入到LogInfo表的每个日期/时间字段的。

在你填充好表的数据后,你可以使用下面的SELECT语句来获取LogInfo表的第一行记录:


SELECT * from dbo.LogInfo
WHERE LogID = 1

SELECT语句返回LogID值为1的记录行的所有字段的值。下面的结果显示了数据是如何存储在表中的。

LogID

LogEvent

Post_DateTime

Post_SmallDateTime<?xml:namespace prefix = o /><?xml:namespace prefix = o />

Post_NVarChar

1

CREATE_TABLE

2005-10-14 01:58:27.567

2005-10-14 01:58:00

Oct 14 2005 1:58AM

你可以看到,每个日期/时间值都稍微有些不同。The Post_DateTime字段存储的是完整日期和时间值。但是,正如我们所预期的,Post_SmallDateTime字段存储一个缩短的时间(00表示秒)。最后,Post_NVarChar存储的是一个与其它两个非常不一样的字符串值。

默认情况下,当SQL Server将一个DATETIME或SMALLDATETIME值转换为一个字符值时,它使用上面显示的格式(Oct 14 2005 1:58AM)。在后面的文章中,你将会知道我们还可以将这种格式修改成其它的一些可用的格式。但是目前而言,我们要知道的重要一点是SQL Server是如何隐式转换日期/时间值的。现在让我们来看看SQL Server中的显式数据转换。

 
查看全文
 
 
 
 
 

SQL Server数据库设计与建模

 
如果把商业现货(COTS)数据建模工具与定制的数据建模应用相比,会发现它们在数据建模方面有很大的差别。
 
使用SQL Server Analysis Services MDX语句,可以很容易地实现像这种具有父子维关系类型的层次结构。
 
SQL Server 2005 中的父子维,解决了如何处理在一个表当中一些记录与本表中其它记录相关联的这样一个常见业务问题。
 
一个范围标记了刻度的一个特定区域,它有助于突出特定的值。例如,在一个间隔为1到10的刻度中,我们可能会考虑添加一个从8到10的范围来突出这些目标数值。
 
现在,双子星项目已经更名为Microsoft PowerPivot,DBA及开发人员可以将目光再转向另外一个SQL Server 2008 R2的功能:Project Madison。
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录