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

Sql server Microsoft SQL Server 2005将日期/时间强制转换为字符串,sql-server,casting,Sql Server,Casting,如何将@lastEndTime转换为格式化的字符串YYYY-MM-DD HH:MM:SS.MS DECLARE @lastEndTime datetime 非常可怕的是,要获得精确的格式,您必须使用函数并构建它 select datepart(yyyy, @lastEndTime) + '-' + datepart(mm, @lastEndTime) + '-' + datepart(dd, @lastEndTime) +' ' + datepart(hh, @lastEndTime) + '

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

DECLARE @lastEndTime datetime

非常可怕的是,要获得精确的格式,您必须使用函数并构建它

select datepart(yyyy, @lastEndTime) + '-' + datepart(mm, @lastEndTime) + '-' + datepart(dd, @lastEndTime) +' ' + datepart(hh, @lastEndTime) + ':' + datepart(mm, @lastEndTime) + ':' + datepart(ss, @lastEndTime) + '.' + datepart(ms,@lastEndTime)
不过,为了便于使用,您可以将其定义为

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

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

应该这样做。

请查看MSDN Books在线文档,其中包含所有支持的内置日期格式的完整列表,可用于转换

例如

将今天的日期和时间转换为格式为
mon-dd-yyyy hh:mim(或PM)
的字符串

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

  • 使用
    DATEPART
    函数提取日期时间的位和段,并手动将其连接在一起
  • 使用SQLCLR和.NET DateTime函数在SQL-CLR用户定义函数中执行此操作
  • 不要在SQL Server中执行此操作,将日期时间传递回调用客户端,并让调用方处理到实际表示格式的转换

    • 声明@lastEndTime datetime set@lastEndTime=getdate()

      选择convert(varchar,@lastEndTime,121)

      更多款式

      是的,的确如此。幸运的是,对于上面的ODBC规范格式,您不必这样做。我已经习惯了使用奇怪的格式,我总是手工操作(这在性能方面显然是有害的)。将更新答案。@jfrobishow:我想这是一个一次性错误。带毫秒的变量为
      121
       CONVERT(VARCHAR(50), GETDATE(), 100)
      
      CONVERT(nvarchar, @lastEndTime, 121)