#sql-server
#sql-сервер
Вопрос:
Я хочу преобразовать эту 20201001163318
varchar
дату и время примерно так 2020-10-01 16:33:18
.
Я попробовал это
select convert(varchar, getdate(), 25)
но это не работает
Комментарии:
1.
convert(varchar, getdate(), 25)
преобразует значение, возвращаемое изGETDATE()
(которое является adatetime
, а не avarchar
) в avarchar
в формате кода стиля 25, который являетсяyyyy-mm-dd hh:mi:ss.mmm
.2. Надеюсь , это не столбец в вашей базе данных; если это так, я настоятельно рекомендую исправить ваш дизайн и не хранить даты в a
varchar
. Если значение исходит из приложения, я рекомендую пересмотреть код и убедиться, что вы передаете тип данных даты и времени, а не avarchar
.
Ответ №1:
Возможно stuff()
, совместно с try_convert()
Пример
declare @S varchar(50) = '20201001163318'
Select try_convert(varchar(19),try_convert(datetime,stuff(stuff(stuff(@S,13,0,':'),11,0,':'),9,0,' ')),120)
ВОЗВРАТ
(No column name)
2020-10-01 16:33:18
Также, если вы хотите преобразовать getdate() в строку, вы можете попробовать:
Select convert(varchar(19),getdate(),120)