Sicht erstellen CAST

Ramon

Neuer Benutzer
Beiträge
3
Hallo zusammen

Anfängerfrage, googeln war bis jetzt erfolglos.
Habe in einer Tabelle das Datum als nvarchar gespeichert.
Nun möchte ich eine Sicht erstellen und das nvarchar Feld in date konvertieren.

SELECT CAST(Feld13 AS Date) AS Liefertermin
FROM dbo.A_KopfFreie

bringt mir folgende Fehlermeldung:
Fehlerquelle: .NetSqlClient DataProvider
Fehlermeldung: Methoden für date können nicht aufgerufen werden.

Also hab ich folgendes versucht:

SET Language Deutsch
SELECT CAST(Feld13 AS Date) AS Liefertermin
FROM dbo.A_KopfFreie

Dies funktioniert nun mindestens in der Vorschau der Daten.
Jedoch kann ich die Sicht nicht speichern. Beim speichern erscheint folgende Fehlermeldung:

Falsche Syntax in der Nähe des SET-Schlüsselwortes

Was mache ich falsch?
Ich arbeite auf dem SQL Server 2008 R2
 
Werbung:
Zwei dinge müssen gegeben sein:

1) Die Syntax des Datums im NVARCHAR Feld muss immer gleich sein. Fehlt irgendwo eine Jahreszahl und es kommt zum Fehler, zeigt er keine Datensätze im SELECT an.
2) Die Syntax muss von der Funktion CAST erkannt werden. Sollte sie nicht von vornherein passen kann man aber den String zerlegen und wieder zusammen setzen. Häufiger Fehler in SQL: Die Ausgabe des Datums ist Deutsch JJJJ-MM-DD HH:MM:SS.XXX und wird von CAST nicht erkannt. CAST setzt ein englisches Datumsformat voraus: JJJJ-DD-MM HH:MM:SS.XXX
 
Vielen Dank für die schnelle Antwort.
Die Syntax des Datums imNVARCHAR Feld ist immer gleich.
Deiner Beschreibung zu entnehmen ist es bei mir ein Deutsches Format. Ich habe Eintrage wie 2010/05/24 also nur Datum, keine Zeit
Komisch ist nur, wenn ich zuerst SET LANGUAGE setze, wird das Datum mit CAST richtig interpretiert, erst wenn ich die Sicht speichern will, erscheint die Fehlermeldung.
Werde mal versuchen ob ich das mit dem zerlegen des Srings hinkriege.
 
Vermutlich gillt das SET LANGUAGE nur innerhalb der Ausgabe und funktioniert in Sichten nicht.
Code:
SELECT    cast(    cast(datepart(yyyy,Feld13) AS CHAR(4)) + '-' + 
                cast(datepart(dd,Feld13) AS CHAR(2)) + '-' + 
                cast(datepart(mm,Feld13) AS CHAR(2)) AS DATETIME) AS Datum_Feld13
So in etwa könnte es klappen.
 
Werbung:
Zurück
Oben