2014-11-17 3 views
7

ich SQL Server 2012 Express verwenden. Die Datenbank hat eine Tabelle [config] mit einem Member vom Typ 'datetime'. Exportieren es (nur Daten) von Management Studio als SQL-Skript erzeugt.MS SQL Server 2012 exportiert Datetime als Skript, das es nicht importieren kann

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

Beim Ausführen des generierten Skripts klagt es, dass der Wert für den Datetime-Typ ungültig ist. Ich kann es manuell beheben, indem ich die Leerstelle zwischen dem Datum und der Uhrzeit durch ein "T" ersetze:

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

in die docmentation von Datumzeit der Suche, unter Verwendung des Formats a Leerzeichen scheint nicht unterstützt zu werden.

Wie kann ich Skripte mit unterstütztem Datums-Zeitformat erzeugen (das heißt inkl. Die ‚T‘)?

Wie kann ich das Format importieren, die eine leere verwendet, ohne das importierte Skript zu ändern?

BTW, es sieht aus wie es auf anderen SQL Server-Installationen funktioniert, aber ich kann den Unterschied nicht finden. Auch die Deinstallation und Neuinstallation von SQL Server hat nicht geholfen.

+0

Welche Arten der Datetime-Formatierung akzeptiert werden, wird von den Ländereinstellungen in Windows auf dem Server gesteuert. Möglicherweise haben die anderen SQL Server-Installationen (auf anderen Servern) andere regionale Einstellungen. –

+0

Dies ist jetzt in SQL Server 2014 behoben, aber für SQL Server 2012 benötigen Sie die Zeile Mikael schlägt –

Antwort

10

Wie kann ich das Format importieren, die ohne Änderung der importierte Skript einen leeren verwendet?

Sie müssen das Import-Skript nur ein wenig ändern. Geben Sie dateformat als ymd am Anfang des Skripts.

set dateformat ymd; 

Wie kann ich generieren Skripte mit unterstütztem Datums-Zeitformat (das heißt inkl. die 'T')?

Abstimmung für einen ... Veränderung ist

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

+1

Ich kann das importierte Skript nicht ändern, seit es generiert wird (von Management Studio). Daher war meine Frage "Wie kann ich ... ** importieren, ohne das importierte Skript zu ändern?". Vielen Dank für die Platzierung des Tickets für diesen Fehler. – user2261015

+0

Warum ist das? Es ist nur Text und kann geändert werden. –

+0

Es ist ein Batch-Prozess, der automatisch im Hintergrund läuft. Ich muss dem Stapel einen Patch-Schritt hinzufügen, der die betroffenen Einfügeanweisungen in einer Menge von Skripten findet und korrigiert. Beachten Sie, dass die einzelne insert-Anweisung meines OP nur ein Beispiel war. Dies ist möglich, aber es ist auch möglich, ein anderes RDBM anstelle von MS SQL Server, ein anderes Betriebssystem oder gar kein SQL zu verwenden - etwas provokativ zu sagen. Es kostet nur eine Sache :-) – user2261015

0

Eine Anweisung date alles braucht ist. Sobald der SET DATEFORMAT vorhanden ist, muss ich nicht einmal die CAST AS verwenden.

Beachten Sie auch, dass Ihr Datumsformat davon abhängt, wo Sie sich in der Welt befinden. Da ich in Dänemark bin, sind meine im Format TT-MM-JJJJ und 24-Stunden-Format, also würde mein Dateformat-Befehl DMY statt YMD sein. Wenn die Reihenfolge falsch ist, erhalten Sie wahrscheinlich einen Fehler, wenn der Wert den zulässigen Wert überschreitet. Ich tat. :)

Hier ist ein Beispiel-Code, der nur für mich gearbeitet jetzt Microsofts eigene SQL-Editor:

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

Glückliche Codierung, Kumpel.

Verwandte Themen