技术开发 频道

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

正如你所看到的下面显示的结果,句法将值转换成VARCHAR:

LogID
LogEvent
Post_Converted
1
CREATE_TABLE
Oct
14 2005 1:58AM
(
1 row(s) affected)

  注意,当SQL Server隐式地将DATETIMER值转换成NVARCHA时,转换的值的格式现在就是你先前看到格式。

  现在你了解了如何使用CAST方法,那么让我们接着看看CONVERT方法。最基本的,CONVERT方法返回与CAST方法一样的结果。比如,与上面的例子一样,下面的语句将Post_DateTime值转换成VARCHAR:

SELECT LogID, LogEvent,  
CONVERT(VARCHAR(20), Post_DateTime) AS Post_Converted
FROM dbo.LogInfo
WHERE LogID = 1

  然而,注意在CONVERT方法中的参数的顺序与CAST方法的是不一样的。当使用CONVERT时,你首先指定目标数据类型(VARCHAR),然后是源字段(Post_DateTime)的名称,它是由逗号分隔的两个参数,而不是AS关键字。当你运行语句时,你会得到下面的结果:

LogID
LogEvent
Post_Converted
1
CREATE_TABLE
Oct
14 2005 1:58AM
(
1 row(s) affected)

  结果跟前面的例子是一样的。但是,如果你想要以一定的格式显示你的日期/时间值,而不是使用目前我们所看到的格式(Oct 14 2005 1:58AM)。这时,你可以在CONVERT方法中添加第三个参数来指定新的格式,如下面的例子所显示的:

SELECT LogID, LogEvent,  
CONVERT(VARCHAR(20), Post_DateTime, 101) AS Post_Converted
FROM dbo.LogInfo
WHERE LogID = 1

  注意,101已经作为第三个参数添加到方法中。当指定一个格式时,你必须使用由T-SQL支持的预定义代码来表示你想要使用的格式。在这种情况下,101返回如下所显示格式的结果:

LogID
LogEvent
Post_Converted
1
CREATE_TABLE
10/14/2005
(
1 row(s) affected)

   Post_Converted值现在的格式是10/14/2005,这个也是代码101代表的格式。如果你想要你的结果显示为类似于DATETIME值所显示的格式,那么你可以指定代码121,如下面的例子:

SELECT LogID, LogEvent,  
CONVERT(VARCHAR(25), Post_DateTime, 121) AS Post_Converted
FROM dbo.LogInfo
WHERE LogID = 1

  现在返回的结果是完整日期和时间值,精确到毫秒:

LogID
LogEvent
Post_Converted
1
CREATE_TABLE
2005-10-14 01:58:27.567
(
1 row(s) affected)

 

0
相关文章