Сложный SQL Запрос к серверу - преобразование времени в 12 часов в 24 часа - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть несколько больших таблиц базы данных с полями времени в 12-часовом формате AM / PM. Это поля varchar (10) (я ничего не могу с этим поделать). В любом случае, моя задача - изменить их на 24-часовой формат. Вот «оригинальные» данные с парой столбцов, которые я добавил. Последние два столбца являются «вспомогательными» столбцами, которые я сделал из строковых функций.

enter image description here

Итак, мои логики c здесь таковы, что если я могу разделить часы и если последние два «PM», то добавьте 12 часов или что-то в этом роде. Мой главный вопрос: правильный ли я синтаксис? Когда я запускаю его, я получаю одну строку, поэтому я не уверен, правильно ли я конвертирую данные. По сути, я хочу взять эту верхнюю таблицу, разобрать часы из CaptureTime1 в целое число, добавить 12, если необходимо, и (в конце концов) получить еще один столбец с «новыми» часами, а затем вставить время обратно вместе.

Я, вероятно, делаю этот ПУТЬ слишком сложным, поэтому я мог бы использовать обратную связь по приведенному ниже коду, но если у кого-то есть более эффективный способ сделать это (я уверен на 90%, что это правда), я весь слух .

enter image description here

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

Просто используйте SQL

SELECT CaptureDate
      ,CaptureTime
      ,left(convert(varchar, CONVERT(DATETIME, CaptureTime, 102), 24),5) as t24
  FROM [StackOver].[dbo].[Convert12to24hourtime]

CaptureDate             CaptureTime t24
2019-05-20 12:00:00.000 07:55       07:55
2019-06-22 00:00:00.000 08:43 AM    08:43
2019-06-22 12:00:00.000 08:51 am    08:51
2019-06-28 00:00:00.000 12:07 PM    12:07
1 голос
/ 22 февраля 2020

Если я понимаю вашу цель, мне кажется, что вы обдумываете это. Это работает для вас?

SELECT LEFT(CONVERT(TIME, CaptureTime, 8), 5) AS NewHours
FROM Capture
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...