Конвертировать 2017-01-13T06: 00: 00Z формат времени в гггг-мм-дд чч: мм: сс - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь конвертировать форматы времени. В таблице базы данных хранится время в столбце VARCHAR (50) в формате «гггг-мм-ддтч: ми: ссЗ». При выполнении запроса я хочу, чтобы время форматировалось как «гггг-мм-дд чч: ми: сс». (Меня не волнует настройка часового пояса.) Я не понимаю, почему GETDATE со стилем 120 возвращает то, что я хочу, но когда я использую имя поля, оно ничего не делает.

SELECT  
  PlateEffectiveFrom as Value_In_Table, 
  STUFF(CONVERT(VARCHAR(33),PlateEffectiveFrom, 120),20,4,'') as 'Gets_Rid_of_Z',  
  CONVERT(varchar(33), PlateEffectiveFrom, 120) AS Does_Nothing,
  CONVERT(varchar(33), GETDATE(), 120) AS Format_I_Want
FROM    dbo.TVLTagDetails13
WHERE   ID = 5

Возвращает:

Value_In_Table          Gets_Rid_of_Z         Does_Nothing           Format_I_Want
2008-03-12T06:00:00Z    2008-03-12T06:00:00   2008-03-12T06:00:00Z   2019-01-08 11:16:41

1 Ответ

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

Решением этой проблемы было бы изменение типа данных столбца на DateTime2, если вам не нужны данные часового пояса, или DateTimeOffset, если вам нужны данные часового пояса. Предполагая, что это не может быть сделано, вы выполняете простую манипуляцию со строкой, чтобы получить значение от "yyyy-mm-ddThh:mi:ssZ" до "yyyy-mm-dd hh:mi:ss":

SELECT LEFT(REPLACE(PlateEffectiveFrom, 'T', ' '), 19) AS Format_I_Want
FROM dbo.TVLTagDetails13
WHERE ID = 5

Кроме того, после разговора в комментариях - необходимо прочесть: Аарона Бертранда * Плохие привычки бросать: выбор неправильного типа данных

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