Сбой преобразования столбца даты и времени SQL Server в 24-часовой формат - PullRequest
1 голос
/ 25 января 2012

У меня есть таблица SQL Server 2008 со столбцом DateTime, которую я хочу преобразовать в 24-часовой формат.

Каноническое руководство заключается в использовании чего-то вроде:

select CONVERT(datetime, GetDate(), 121)

, что дает:

2012-01-24 15:22:27.340

Отлично.Итак, применяя эти знания, давайте заменим GetDate() на столбец для выражения CONVERT:

select top(5) CONVERT(datetime, LogTable.Timestamp, 121) from LogTable
order by LogTable.Id DESC

И мы получим:

2012-01-24 03:25:47.933
2012-01-24 03:25:46.917
2012-01-24 03:25:46.547
2012-01-24 03:25:46.543
2012-01-24 03:25:46.543

Что я делаю не так?Как создать выражение, чтобы заставить CONVERT работать со столбцом, а не с выводом функции GetDate()?

Ответы [ 2 ]

1 голос
/ 25 января 2012

Мне удалось найти решение этой проблемы: служба, записывающая метки времени в таблицу SQL, из-за неправильного форматирования записывала «голые» даты и время в поле, фактически делая их «AM» независимо от того, когда ониприбыло.

Мне удалось переписать исходный код, чтобы записать 24-часовые данные в поле, и теперь он работает, как и ожидалось.Я с облегчением узнал, что моя интуиция была верна, и источником этой был случайный сервис.

Спасибо всем за их советы и рекомендации - очень, очень признателен!

1 голос
/ 25 января 2012

24-часовой формат имеет значение только для строк. Когда вы используете:

convert(datetime, ...

Вы переводите в datetime. Чтобы отобразить 24 часа, необходимо преобразовать в строку, например:

convert(varchar(24), ...

Если вы начинаете с столбца varchar, вы можете преобразовать в datetime и обратно в varchar для отображения в 24-часовом формате. Например, чтобы преобразовать AM / PM varchar и отобразить его в течение 24 часов:

select convert(varchar(16), convert(datetime, 'sep 01 2011 01:23PM', 100), 120)

Здесь стиль 100 используется для анализа. Стиль 120 используется для форматирования.

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