我想像这样将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。
答案 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)
这通常是在表示层中完成的,但是如果需要在数据层中做到这一点,可以使用FORMAT
(documentation here)
语法为:FORMAT ( value, format [, culture ] )
因此,在您的情况下(已编辑,可根据您的评论添加AM / PM名称):FORMAT([Date & Time Added], 'dd/MM/yyy hh:mm:ss.fff tt')