Ошибка преобразования при преобразовании даты и/или времени из строки символов

Я использую SQL Server 2008 R2 и выбрал вариант экспорта данных из таблицы в сценарий SQL INSERT, используя «Скрипт данных как» -> «ВСТАВИТЬ с именами столбцов». В результате получился скрипт, похожий на следующий:

INSERT INTO [MyTable] ([Id],[InsertDateTime],[Firstname],[Email]) VALUES (1, '26/06/2012 2:02:25 p.m.', 'Robert', '[email protected]');
INSERT INTO [MyTable] ([Id],[InsertDateTime],[Firstname],[Email]) VALUES (2, '28/06/2012 4:17:21 a.m.', 'David', '[email protected]');

Если я сразу же попытаюсь запустить этот сгенерированный скрипт на пустой версии таблицы, я получу следующую ошибку:

Conversion failed when converting date and/or time from character string.

2 вопроса:

  1. Строка даты/времени имеет формат «дд/мм/гггг ч:мм:сс». Как указать SQL-серверу конкретный формат, из которого я хочу преобразовать строковое представление даты/времени? Сценарий генерирует около 5000 строк INSERT, поэтому я могу найти и заменить там, где это целесообразно...
  2. Зачем SQL Server вообще генерировать сценарий, который он не может запустить?

Спасибо!


person Nanite    schedule 20.08.2012    source источник


Ответы (1)


Сначала используйте set dateformat, чтобы установить правильный Дата заказа запчастей. В вашем случае "дми". Затем замените все «a.m.» на «AM» и «pm» на «PM» во всех ваших заявлениях. Следующий скрипт работает нормально:

 set dateformat dmy

 INSERT INTO [MyTable] ([Id],[InsertDateTime],[Firstname],[Email]) 
   VALUES (1, '26/06/2012 2:02:25 PM', 'Robert', '[email protected]');
 INSERT INTO [MyTable] ([Id],[InsertDateTime],[Firstname],[Email]) 
     VALUES (2, '28/06/2012 4:17:21 AM', 'David', '[email protected]');
person valex    schedule 20.08.2012
comment
Если утром и вечером не распознаются SQL Server, почему один из собственных встроенных сценариев SSMS генерирует формат даты, который не может быть распознан? - person Nanite; 24.08.2012