SQL将日期时间转换为varchar

时间:2018-10-09 07:52:03

标签: sql sql-server tsql datetime sql-server-2012

我想像这样将DATETIME转换为VARCHAR(月/日/年):

10/09/2018 12:00:00.000

我尝试使用

Convert(VARCHAR(MAX),[Date & Time Added]),121)

但返回

yyyy-mm-dd hh:mi:ss.mmm

我需要/格式的时间,我正在使用SQL Server 2012。

2 个答案:

答案 0 :(得分:6)

您可以使用FORMAT函数:

SELECT FORMAT(GETDATE(), 'MM/dd/yyyy HH:mm:ss.fff')
-- 10/09/2018 00:58:52.557

完整的格式说明符列表实际上是available in the .NET documentation


如果FORMAT函数不可用,您可以简单地以已知格式进行格式化,然后使用字符串函数重新安排年,月,日和时间部分。例如:

SELECT SUBSTRING(DateStr, 6, 2) + '/' + SUBSTRING(DateStr, 9, 2) + '/' + SUBSTRING(DateStr, 1, 4) + ' ' + SUBSTRING(DateStr, 12, 12)
FROM (
    SELECT CONVERT(VARCHAR(23), GETDATE(), 126) -- ISO8601 / yyyy-mm-ddThh:mi:ss.mmm
) AS CA(DateStr)
-- 10/09/2018 01:12:50.833

SELECT CONVERT(VARCHAR(10), Date, 101) + ' ' + CONVERT(VARCHAR(12), Date, 114)
FROM (
    SELECT GETDATE()
) AS CA(Date)
-- 10/09/2018 01:19:38:463

答案 1 :(得分:3)

这通常是在表示层中完成的,但是如果需要在数据层中做到这一点,可以使用FORMATdocumentation here

语法为:FORMAT ( value, format [, culture ] )

因此,在您的情况下(已编辑,可根据您的评论添加AM / PM名称)FORMAT([Date & Time Added], 'dd/MM/yyy hh:mm:ss.fff tt')

Custom date format string options are detailed here