Я давно искал разрешение и, похоже, просто не могу сформулировать запрос, который возвращает разрешение, так что в качестве последнего средства я разместил здесь.У меня есть таблица SQL-сервера со столбцом varchar, в которой дата и время хранятся в этом формате
"1/1/2013 11:38:31 PM Some other text"
Мне нужно, чтобы эта часть даты и времени этих данных была сохранена в другом столбце в типе данных datetime.Поэтому я создал новый столбец с именем DateTimeLog типа datetime.
Затем я использовал left, чтобы отрезать дополнительный текст и преобразовать его, чтобы изменить значение в формат datetime, и получил ожидаемый результат.
select CONVERT(DATETIME,(rtrim(left(olddate, 21)))) from mytable
results:
"2013-01-01 23:38:31.000"
Пока все хорошо.это то, что я ожидал.Мои проблемы начинаются, когда я пытаюсь обновить свой новый столбец datetime с результатами этого оператора CONVERT.
update mytable
SET DateTimeLog = CONVERT(DATETIME,(rtrim(left(olddate, 21)))) from mytable
Я получаю печально известное сообщение об ошибке «Ошибка преобразования при преобразовании даты и / или времени из символьной строки».
Conversion failed when converting date and/or time from character string.
Я также пытался использовать приведение
update mytable
SET DateTimeLog = (cast(CONVERT(DATETIME,(rtrim(left(oldtable, 21)))) as datetime)) from mytable
, ошибка сохраняется.Насколько я могу сказать, преобразование работает правильно, потому что я могу видеть набор результатов из выбора, но получение этого результата в новом столбце до сих пор ускользало от меня.спасибо,