SQL Server 2012 - Convert (varchar, '2018-12-16 17: 33: 29', 105) + '' Convert (varchar, '2018-12-16 17: 33: 29', 108) не показывает правильные данные - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть столбец типа данных datetime с форматом данных «16-12-2018 17:33:29» (дд-мм-гггг чч: мм: сс).Поэтому, если я получу входные данные как 2018-12-16 17:33:29, данные должны быть преобразованы в '16 -12-2018 17:33:29 '.

Это преобразование типа данных, которое япытался,

SELECT 
    CONVERT(VARCHAR(10), '2018-12-16 17:33:29', 105) + ' ' +
    CONVERT(VARCHAR(10), '2018-12-16 17:33:29', 108)

Вывод: 2018-12-16 2018-12-16

Но если я использую Getdate() вместо жестко заданного значения, я получаю ожидаемый формат данных:

SELECT 
    CONVERT(VARCHAR(10), GETDATE(), 105) + ' '  + 
    CONVERT(VARCHAR(10), GETDATE(), 108)

Вывод: 16-12-2018 17:36:18

Мой вопрос: почему работает тот же запрос преобразования типов данных, если мы используем getdate(), но не в жестко закодированных значениях?

enter image description here

1 Ответ

0 голосов
/ 16 декабря 2018

Ваш второй запрос имеет значение даты в качестве второго параметра.В вашем первом запросе есть только строка.
Тот факт, что эта строка выглядит как дата, не важен для SQL.

Редактировать .Если ваш столбец имеет тип datetime, используйте значения datetime для передачи данных.Старайтесь как можно чаще держаться подальше от струн.

...