1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Sicht erstellen CAST

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Ramon, 21 November 2011.

  1. Ramon

    Ramon Neuer Benutzer

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    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
     
  3. Ramon

    Ramon Neuer Benutzer

    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.
     
  4. ukulele

    ukulele Datenbank-Guru

    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.
     
    Walter gefällt das.
  5. Ramon

    Ramon Neuer Benutzer

    Funktioniert einwandfrei!
    Musste nur Deinen Code kopieren.
    Vielen Dank:)
     

Diese Seite empfehlen