Announcement

Collapse
No announcement yet.

Datentyp date

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datentyp date

    Hallo zusammen!
    Ich habe eine Spalte mit Daten der Art:"25.10.04" . Der Typ ist nvarchar(50).
    Diese möchte ich gern in den Datentyp date (datetime) konvertieren. Ist das überhaupt so ohne weiteres möglich?
    Danke

    Gruß
    Martin_s

  • #2
    Select convert (datetime, '25.10.04', 4)

    Comment


    • #3
      Hallo ebis,
      danke für deine schnelle Antwort.

      Leider bin ich damit nicht viel weiter gekommen. Der Datentyp meiner Spalte ERS ist immer noch nvarchar.

      Comment


      • #4
        Das kannst du im ManagementStudio ändern. Dazu im ManagementStudio rechter Mausklick auf die Tabelle, "Entwerfen" wählen, zur Spalte gehen, Datentyp auf datetime (oder samlldatetime, "date" gibt es ab SQL 2008) ändern und Tabelle speichern. Wenn du schon mit SQL2008 arbeitest, musst du unter Umständen zuerst unter Extras -> Optionen -> Designer -> Tabellen- und ... bei der Option "Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern" das Häckchen entfernen.
        Beim Speichern kann es zu einer Fehlermeldung kommen, wenn das Datum nicht im richtigen Format vorhanden ist, dann müsste man vorher die Datenstrings entsprechend korrigieren (hängt davon ab, was nicht stimmt).

        bye,
        Helmut

        Comment


        • #5
          Hallo Helmut,
          ich benutze noch MSSQL2005. Über das Server Management Studio habe ich es schon probiert. Funktioniert aber leider nicht. Bekomme folgenden Fehler:Arithmetischer Überlauffehler beim Konvertieren von expression in den datetime-Datentyp. Die Daten liegen in der Form: dd.mm.yy vor.

          Gruß
          martin_s

          Comment


          • #6
            Hallo martin_s

            Arithmetischer Überlauffehler beim Konvertieren von expression
            das liegt daran, dass das Feld Daten enthält, die der Sql Server nicht implizit in ein DateTime konvertieren kann; z.B. weil ein Datensatz ein ungültiges Datum enthält.

            Du kannst die ungültigen Daten mit

            SELECT *
            FROM Tabelle
            WHERE ISDATE(ERS) = 0

            selektieren.

            Ein sonstiges Vorgehen ist
            - Ein neues Feld vom Typ DateTime anlegen
            - Das neue Feld mit convert (datetime, ERS, 4) (als Beispiel) updaten, wo ein gültiges Datum drin steht
            - Verbleibende, nicht konvertierbare Daten prüfen und bereinigen/updaten
            - Altes Feld droppen
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment


            • #7
              Diese Meldung sagt genau das aus, was ich vermutete - die Daten in Stringform sind für die Umwandlung noch nicht geeignet. Du könntest jetzt mal eine neue datetime-Spalte mit irgendeinem Namen anlegen (sagen wir mal "dummy") und mit dem update spielen, zB. so:

              update myeineTabelle set dummy = convert(datetime, datumsstring, 104)

              Der dritte Parameter gibt dabei das Datumsformat des Strings an. Beschreibung dazu siehe hier.

              Und wenn das update ohne Fehlermeldung erfolgreich war, kannst du ja nochmals ein select machen und das Ergebnis einer letzten Sichtkontrolle unterziehen, bevor du dann die Tabelle im Bearbeiten-Modus öffnest, die Stringspalte löscht, die dummy-Spalte umbenennst in den Namen der Stringspalte, meinetwegen die auch noch an eine andere Position schiebst und das Ganze dann wieder speicherst.

              bye,
              Helmut

              Comment


              • #8
                @ O. Helper

                Danke für den Tipp.
                So konnte ich die fehlerhaften Datensätze finden und korrigieren.

                Comment

                Working...
                X