技术开发 频道

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

  【IT168 技术文档】在本文中,我将解释如何将DATETIME和SMALLDATETIME数据类型转换成字符数据,以及如何将字符数据转换成日期/时间数据。具体来说,本章将介绍Transat-SQL支持的两个内置SQL Server数据转换方法——隐式转换和显式转换。我将解释日期/时间数据是如何转换成字符数据和字符数据是如何转换成日期/时间数据以及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表的每个日期/时间字段的。

0
相关文章