如何将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'
除了以前答案中的CAST
和CONVERT
函数之外,如果使用SQL Server 2012及更高版本,则可以使用FORMAT函数将基于DATETIME
的types转换为string。
要转换回来,请使用相反的PARSE
或TRYPARSE
函数。
格式化样式基于.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语法:
试试下面:
DECLARE @myDateTime DATETIME SET @myDateTime = '2013-02-02' -- Convert to string now SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)