2014-11-17 3 views
7

Я использую SQL Server 2012 Express. База данных имеет таблицу [config] с членом типа 'datetime'. Экспорт его (только данных) с помощью Management Studio в виде сценария SQL генерирует:MS SQL Server 2012 экспортирует datetime как скрипт, который он не может импортировать

INSERT [dbo]. [Config] ([id], [name], [creation_date], ...) VALUES (13, N'Test ', CAST (N'2014-11-17 09: 29: 07.047' AS DateTime), ...)

Теперь при выполнении сгенерированного скрипта он жалуется, что значение типа datetime недопустимо. Я могу вручную исправить это, заменив пробел между датой и временем на «Т»:

INSERT [dbo]. [Config] ([id], [name], [creation_date], ...) VALUES (13, N'Test», CAST (N'2014-11-17 T 09: 29: 07,047' AS DateTime), ...)

Глядя в docmentation из DateTime, формат с использованием пустой, кажется, не поддерживается.

Как я могу сгенерировать скрипты с поддерживаемым форматом datetime (т. Е. Включая «T»)?

Как импортировать формат, который использует пробел без изменения импортированного сценария?

BTW, похоже, что он работает с другими установками SQL Server, но я не могу найти разницы. Также удалить и переустановить SQL Server не помогло.

+0

Какие типы форматирования даты и времени используются с помощью региональных настроек в Windows на сервере. Возможно, другие установки SQL Server (на других серверах) имеют другие региональные настройки. –

+0

Теперь это исправлено в SQL Server 2014, но для SQL Server 2012 вам понадобится строка Mikael предлагает –

ответ

10

Как импортировать формат, который использует пробел, без изменения импортированного сценария ?

Необходимо изменить сценарий импорта, но немного. Укажите dateformat как ymd в начале скрипта.

set dateformat ymd; 

Как я могу создавать сценарии с поддерживаемый формат даты и времени (т.е. вкл. 'т')?

Голосование за изменения ...

"Generate scripts" for data, scripts datetime in a locale dependent format

+1

Я не могу изменить импортированный скрипт с момента его создания (по Management Studio). Поэтому мой вопрос: «Как я могу импортировать ... ** без изменения ** импортированного скрипта?». Однако, спасибо за размещение билета для этой ошибки. – user2261015

+0

Почему? Это просто текст и может быть изменен. –

+0

Его пакетный процесс, который запускается в фоновом режиме автоматически. Я должен добавить некоторый шаг исправления к пакету, который находит и исправляет затронутые инструкции вставки в большом количестве скриптов. Обратите внимание, что один пример insert в моем OP был всего лишь примером. Это возможно, но также возможно использовать другой RDBM вместо MS SQL Server, другую операционную систему или вообще не SQL, - сказать это немного провокационно. Его только вопрос стоит :-) – user2261015

0

Инструкция DateFormat все есть берет. Как только SET DATEFORMAT на месте, мне даже не нужно использовать CAST AS.

Также обратите внимание, что формат даты зависит от того, где вы находитесь в мире. Будучи в Дании, мои являются в формате DD-MM-YYYY и 24-часовыми часами, поэтому моя инструкция dateformat будет DMY, а не YMD. Если последовательность неверна, вы, вероятно, получите сообщение об ошибке, превышающей допустимое значение. Я сделал. :)

Вот пример кода, который работал для меня только сейчас с помощью собственного редактора SQL компании Microsoft:

SET DATEFORMAT DMY 
INSERT INTO mytable ([id],[page],[saved]) VALUES ('2','29','16-01-2017 13:53:22') 

Happy кодирования, мат.

 Смежные вопросы

  • Нет связанных вопросов^_^