wuschba 10 Geschrieben 12. Januar 2011 Melden Teilen Geschrieben 12. Januar 2011 Und leider gleich noch ein Problem: Ich habe eine lange Datei bekommen, die viele SQL-Statements als Text aneinandergereit enthält. Diese versuche ich nun einzulesen mittels OSQL.EXE -U... -P... -d... -S... -i file.sql Das funktioniert auch bis zu dieser Stelle: INSERT INTO [dbo].[tTabelle] ([col1],[col2],[col3],[col4],[col5],[col6],[col7],[col8]) VALUES (1,304,0,'May 23 2010 12:00AM',0,NULL,NULL,NULL); Fehlermeldung: Meldung '241', Ebene '16', Status '1', Server '...', Zeile 1995 Fehler beim Konvertieren einer Zeichenfolge in einen datetime-Wert. Tabellendefinition: CREATE TABLE [dbo].[tTabelle] ( [col1] int not null, [col2] int null, [col3] tinyint null, [col4] datetime null, [col5] int null, [col6] datetime null, [col7] tinyint null, [col8] tinyint null ); Wie kann ich OSQL nun beibringen, 'May 23 2010 12:00AM' als Datetime zu parsen? Ich kann leider die file.sql nicht mehr anders nochmal erhalten und alle enthaltenen Datetimes umzuschreiben wäre auch ne ziemliche Arbeit... Kann ich das Format evtl. irgendwo als gültiges DatetimeFormat hinterlegen? Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 12. Januar 2011 Melden Teilen Geschrieben 12. Januar 2011 Negativ. Da es sich in der verwendeten Formatierung um einen String handelt, welcher nachvollziehbarer Weise nicht in ein DateTime-Format passt. Abhilfe: die Statements so umarbeiten, das eine korrekte Umwandlung passiert: CAST und CONVERT (Transact-SQL) Gruß Carsten Zitieren Link zu diesem Kommentar
wuschba 10 Geschrieben 13. Januar 2011 Autor Melden Teilen Geschrieben 13. Januar 2011 Danke, auch für den Link! Das ist echt komisch, weil das o.g. Datumsformat in Deinem Link als "Standard" bezeichnet wird - und trotzdem wird es nicht erkannt. Seltsam. Aber nach Deiner Antwort hat es wohl auch keinen Zweck, mal zu versuchen, eine engl. Version von MSSQL-Server zu installieren oder das Betriebssystem auf engl. umzustellen, dann versuche ich mal, eine RegExp zu finden, die mir das Convert da mit reinfrimmelt... Zitieren Link zu diesem Kommentar
NilsK 2.969 Geschrieben 13. Januar 2011 Melden Teilen Geschrieben 13. Januar 2011 Moin, die Installationssprache hat damit weniger zu tun. Um sicher zu gehen, dass SQL Server dein Datum richtig interpretiert, kannst du in dem Statement die Eingabesprache ausdrücklich auf US-Englisch setzen. Jedenfalls funktioniert folgendes Statement hier mit deinem Datumsformat: set language us_english select YEAR('May 23 2010 12:00AM') Gruß, Nils Zitieren Link zu diesem Kommentar
wuschba 10 Geschrieben 13. Januar 2011 Autor Melden Teilen Geschrieben 13. Januar 2011 @Nils: You just made my day :D Zitieren Link zu diesem Kommentar
NilsK 2.969 Geschrieben 13. Januar 2011 Melden Teilen Geschrieben 13. Januar 2011 Moin, freut mich! :) Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.