SQL конвертировать datetime в varchar - PullRequest
0 голосов
/ 09 октября 2018

Я хочу преобразовать 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 голосов
/ 09 октября 2018

Вы можете использовать функцию FORMAT:

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

Полный список спецификаторов формата на самом деле доступен в документации .NET .


Если функция 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
0 голосов
/ 09 октября 2018

Это то, что обычно делается на уровне представления, но если вам нужно сделать это на уровне данных, вы можете использовать FORMAT ( документация здесь )

Синтаксисэто: FORMAT ( value, format [, culture ] )

Так что в вашем случае (отредактировано для добавления обозначения AM / PM в соответствии с вашими комментариями) : FORMAT([Date & Time Added], 'dd/MM/yyy hh:mm:ss.fff tt')

Пользовательская строка формата датыпараметры подробно описаны здесь

...