代码之家  ›  专栏  ›  技术社区  ›  Kevin

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

  •  2
  • Kevin  · 技术社区  · 16 年前

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

    DECLARE @lastEndTime datetime
    
    4 回复  |  直到 16 年前
        1
  •  2
  •   Andras Vass    16 年前
    CONVERT(nvarchar, @lastEndTime, 121)
    
        2
  •  3
  •   marc_s MisterSmith    16 年前

    查看MSDN联机丛书文档 CAST and CONVERT -它有一个完整的列表,列出了所有支持的内置日期格式,您可以在convert中使用这些格式。

    例如。

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

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

    如果字符串与这些格式不匹配,则必须

    • 使用 DATEPART 函数提取日期时间的位和片段并手动将其连接在一起
    • 使用sql clr和.net datetime函数在sql-clr用户定义函数中执行此操作
    • 不要在SQL Server中执行此操作,而是将日期时间传递回调用客户端,让调用方处理到实际表示格式的转换
        3
  •  3
  •   Jon Hopkins    16 年前

    非常可怕的是,要获得精确的格式,您必须使用 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)
    

    应该这么做。

        4
  •  1
  •   jfrobishow    16 年前

    声明@lastendtime datetime 设置@lastendtime=getdate()

    选择转换(varchar,@lastendtime,121)

    为了更时尚 http://msdn.microsoft.com/en-us/library/ms187928.aspx