Как мне показать только время с AM или PM из поля в формате datetime? - PullRequest
2 голосов
/ 21 октября 2011

У меня есть столбец данных в SQL, который в настоящее время находится в формате datetime.Это может быть изменено при необходимости.Мне нужно показать только время дня с точностью до 10 секунды, с привязкой либо к AM, либо к PM.Я не хочу, чтобы дата была показана в этом случае.

Так что вместо '1900-01-01 11: 45: 59.800' в качестве примера мне нужно '11: 45: 59.8 AM'.
Кроме того, это не текущее время "getdate",Именно из поля данных, которое я назвал «Время», я вижу все виды форматов конвертации в сети, но ни один не поднимет это для меня.

Спасибо !!!!

Ответы [ 3 ]

9 голосов
/ 21 октября 2011

Как и в моем комментарии, я бы посоветовал вам не делать этого.

SQL Server - это место для данных, а преобразование данных для целей отображения часто представляет собой размытие линий, которые могут преследовать вас. (Один пример; что если вам понадобится это время как Время где-то еще в будущем. Собираетесь ли вы снова преобразовать его из строки?)

Если это необходимо, то вам придется выполнить часть форматирования самостоятельно.

SELECT
  RIGHT(CONVERT(VARCHAR(26), GETDATE(), 109), 14)

Или, более грязный ...

SELECT
  DATEPART(HOUR, GETDATE()) + ':' +
  DATEPART(MINUTE, GETDATE()) + ':' +
  DATEPART(SECOND, GETDATE()) + '.' +
  DATEPART(MILLISECOND, GETDATE()) +
  CASE WHEN DATEPART(HOUR, GETDATE()) < 12 THEN 'AM' ELSE 'PM' END


Я сказал? Вы лучше делаете это на стороне клиента;)

1 голос
/ 21 октября 2011

Переименуйте поле таблицы, Time - зарезервированное слово, и его будет сложно поддерживать.Убедитесь, что вы используете новый тип данных datetime2, если вам нужна точность в миллисекундах.

Для форматирования временной части используйте:

SELECT CONVERT(TIME, [Time]) FROM [Your Table]

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

SELECT CONVERT(TIME(3), [Time]) FROM [Your Table] 
0 голосов
/ 05 июня 2019

Я думаю, это сработает, если вы хотите получить в формате ЧЧ: ММ

SELECT
  RIGHT(CONVERT(VARCHAR(26), GETDATE(), 117), 14)

Вы также можете обратиться к этой странице для других форматов

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36271.1570/html/blocks/X41864.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...