FORMAT ([Time], 'hh: mm') возвращает NULL - PullRequest
0 голосов
/ 16 января 2019

У меня есть таблица календаря со следующей структурой :

CalendarID    nvarchar(13)
Date          date
Time          time(7)

с такими данными, как:

Calendar table data

Форматирование столбца времени как hhmm работает:

SELECT [CalendarID]
     , FORMAT([Date], 'ddd, MMM dd, yyyy') AS [DATE]
     , FORMAT([Time], 'hhmm') AS [Time]
FROM [dbo].[Calendar]

select time format (hhmm)

Но форматирование как hh:mm не работает и отображает NULL:

SELECT [CalendarID]
     , FORMAT([Date], 'ddd, MMM dd, yyyy') AS [DATE]
     , FORMAT([Time], 'hh:mm') AS [Time]
FROM [dbo].[Calendar]

select time format (hh:mm)

Как мне отформатировать его как hh:mm?

Ответы [ 3 ]

0 голосов
/ 16 января 2019

Из документов :

FORMAT опирается на правила форматирования CLR, которые определяют, что двоеточия и периоды должны быть исключены. Поэтому при форматировании строки (второй параметр) содержит двоеточие или точку, двоеточие или точка должны быть с обратной косой чертой, когда входное значение (первый параметр) имеет тип данных времени.

Это должно работать:

SELECT FORMAT(CAST('09:00:00.1234567' AS TIME(7)), 'hh\:mm')              -- 09:00
SELECT FORMAT(CAST('09:00:00.1234567' AS TIME(7)), 'hh\:mm\:ss\.fffffff') -- 09:00:00.1234567
0 голосов
/ 16 января 2019

Вы можете проверить документы о дате и дате и времени

https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-2017

После предупреждения Ларну

Обновление:

По приведенной выше ссылке вы можете отформатировать время так:

SELECT FORMAT(cast(GETDATE() as time), N'hh\:mm\:ss');
0 голосов
/ 16 января 2019

Попробуйте так:

FORMAT([Time], N'hhmm') AS [Time]

или

FORMAT([Time], N'hh\:mm') AS [Time]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...