Microsoft SQL Server 2005将日期/时间转换为字符串

时间:2010-04-14 20:31:19

标签: sql-server casting

如何将@lastEndTime转换为格式为YYYY-MM-DD HH:MM:SS.MS的字符串?

DECLARE @lastEndTime datetime

4 个答案:

答案 0 :(得分:3)

非常可怕的是,要获得精确的格式,您必须使用datepart功能并进行构建。

select datepart(yyyy, @lastEndTime) + '-' + datepart(mm, @lastEndTime) + '-' + datepart(dd, @lastEndTime) +' ' + datepart(hh, @lastEndTime) + ':' + datepart(mm, @lastEndTime) + ':' + datepart(ss, @lastEndTime) + '.' + datepart(ms,@lastEndTime)

您可以将其定义为function,以方便使用。

编辑 - 正如有人指出的那样,这种格式恰好是标准 - ODBC规范所以

 CONVERT(CHAR(23), @lastEndTime, 121)

应该这样做。

答案 1 :(得分:3)

查看CAST and CONVERT的MSDN联机丛书文档 - 它包含可与CONVERT一起使用的所有受支持的内置日期格式的完整列表。

E.g。

 CONVERT(VARCHAR(50), GETDATE(), 100)

会将今天的日期和时间转换为mon dd yyyy hh:miAM (or PM)格式的字符串。

如果您的字符串与这些格式中的任何一种都不匹配,那么您必须

  • 使用DATEPART函数提取DATETIME的部分内容并手动将它们连接起来
  • 使用SQLCLR和.NET DateTime函数在SQL-CLR用户定义函数中执行此操作
  • 不要在SQL Server中执行此操作并将DATETIME传回给调用客户端并让调用者处理转换为实际的表示格式

答案 2 :(得分:2)

CONVERT(nvarchar, @lastEndTime, 121)

答案 3 :(得分:1)

DECLARE @lastEndTime datetime 设置@lastEndTime = getdate()

选择convert(varchar,@ lastEndTime,121)

更多款式 http://msdn.microsoft.com/en-us/library/ms187928.aspx