如何将date时间转换为T-SQL中的string

我很惊讶,不能在这里find这个问题。

我有一个date时间var,我想将其转换为一个string,以便我可以将其附加到另一个string。 我希望它可以很容易地转换回date时间的格式。

我怎样才能做到这一点?

(我想要date部分和时间部分。)

以下查询将获取当前date时间并转换为string。 采用以下格式
yyyy-mm-dd hh:mm:ss(24h)

 SELECT convert(varchar(25), getdate(), 120) 
  • SQLFiddle演示
  • SQL Serverdate格式

有很多不同的方法来convert datetime时间convert为string。 这是一个方法:

 SELECT convert(varchar(25), getdate(), 121) – yyyy-mm-dd hh:mm:ss.mmm 

看演示

这是一个网站,其中包含所有转化的列表:

如何在SQL Server中格式化date时间和date

您可以使用Microsoft SQL Server中的convert语句将date转换为string。 使用的语法的一个例子是:

 SELECT convert(varchar(20), getdate(), 120) 

以上操作将以24小时制的格式YYYY-MM-DD HH:MM:SS返回当前的date和时间。

您可以将语句末尾的数字更改为其中的一个,这将更改返回的string格式。 这些代码的列表可以在CAST和CONVERT参考部分的MSDN中find。

有3种不同的方法取决于我是我的要求和我正在使用的版本。

这里是方法..

1)使用转换

 DECLARE @DateTime DATETIME = GETDATE(); --Using Convert SELECT CONVERT(NVARCHAR, @DateTime,120) AS 'myDateTime' ,CONVERT(NVARCHAR(10), @DateTime, 120) AS 'myDate' ,RIGHT(CONVERT(NVARCHAR, @DateTime, 120),8) AS 'myTime' 

2)使用Cast(SQL Server 2008及更高版本)

 SELECT CAST(@DateTime AS DATETIME2) AS 'myDateTime' ,CAST(@DateTime AS DATETIME2(3)) AS 'myDateTimeWithPrecision' ,CAST(@DateTime AS DATE) AS 'myDate' ,CAST(@DateTime AS TIME) AS 'myTime' ,CAST(@DateTime AS TIME(3)) AS 'myTimeWithPrecision' 

3)使用固定长度字符数据types

 DECLARE @myDateTime NVARCHAR(20) = CONVERT(NVARCHAR, @DateTime, 120); DECLARE @myDate NVARCHAR(10) = CONVERT(NVARCHAR, @DateTime, 120); SELECT @myDateTime AS 'myDateTime' ,@myDate AS 'myDate' 

除了以前答案中的CASTCONVERT函数之外,如果使用SQL Server 2012及更高版本,则可以使用FORMAT函数将基于DATETIME的types转换为string。

要转换回来,请使用相反的PARSETRYPARSE函数。

格式化样式基于.NET(类似于ToString()方法的string格式化选项),并具有文化感知的优点。 例如。

 DECLARE @DateTime DATETIME2 = SYSDATETIME(); DECLARE @StringResult1 NVARCHAR(100) = FORMAT(@DateTime, 'g') --without culture DECLARE @StringResult2 NVARCHAR(100) = FORMAT(@DateTime, 'g', 'en-gb') SELECT @DateTime SELECT @StringResult1, @StringResult2 SELECT PARSE(@StringResult1 AS DATETIME2) SELECT PARSE(@StringResult2 AS DATETIME2 USING 'en-gb') 

结果:

 2015-06-17 06:20:09.1320951 6/17/2015 6:20 AM 17/06/2015 06:20 2015-06-17 06:20:00.0000000 2015-06-17 06:20:00.0000000 

检查t-sql的CAST和CONVERT语法:

http://msdn.microsoft.com/en-us/library/ms187928.aspx

试试下面:

 DECLARE @myDateTime DATETIME SET @myDateTime = '2013-02-02' -- Convert to string now SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)