wuschba 10 Geschrieben 12. Januar 2011 Melden 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?
phoenixcp 10 Geschrieben 12. Januar 2011 Melden 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
wuschba 10 Geschrieben 13. Januar 2011 Autor Melden 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...
NilsK 3.045 Geschrieben 13. Januar 2011 Melden 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
wuschba 10 Geschrieben 13. Januar 2011 Autor Melden Geschrieben 13. Januar 2011 @Nils: You just made my day :D
NilsK 3.045 Geschrieben 13. Januar 2011 Melden Geschrieben 13. Januar 2011 Moin, freut mich! :) Gruß, Nils
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden