Tef Leun 0 Geschrieben 4. Dezember 2013 Melden Teilen Geschrieben 4. Dezember 2013 Morgen zusammen, ich habe folgendes Problem: In der DB liegt in der Kundentabelle der Geburtstag des Kunden als int vor. Nun möchte ich mir das gerne in einer View korrekt anzeigen lassen. Also am heutigen Beispiel soll aus "20131204" - "04.12.2013" werden... Entweder direkt in der Datumspalte umwandeln oder daneben noch ne berechnete Spalte erzeugen. select KUN_NUMMER, ANS_NAME2, ANS_EMAIL, ANS_SACHGEBURTSTAG, cast(datetime,str(ANS_SACHGEBURTSTAG)) as Geburtstagfrom dbo.KUNDE inner join dbo.ANSCHRIFon dbo.KUNDE.KUN_NUMMER = dbo.ANSCHRIF.ANS_NUMMER Meine Versuche mit cast, convert usw sind bis jetzt irgendwie alle gescheitert. Könnt ihr mir da weiter helfen? Danke im Voraus. Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 4. Dezember 2013 Melden Teilen Geschrieben 4. Dezember 2013 Dieser Artikel sollte helfen: http://www.insidesql.org/blogs/frankkalis/2005/06/24/integer-in-datum-umwandeln Zitieren Link zu diesem Kommentar
Tef Leun 0 Geschrieben 4. Dezember 2013 Autor Melden Teilen Geschrieben 4. Dezember 2013 Hi Sunny, den Artikel hatte ich auch schon beackert aber auch er hat mich noch nicht zum Ziel gebracht. Sähe in meinem Fall dann ja so aus: select KUN_NUMMER, ANS_NAME2, ANS_EMAIL, ANS_SACHGEBURTSTAG, cast(cast(ANS_SACHGEBURTSTAG as CHAR(8)) as datetime) as Geburtstagfrom dbo.KUNDE inner join dbo.ANSCHRIFon dbo.KUNDE.KUN_NUMMER = dbo.ANSCHRIF.ANS_NUMMER Da bringt er dann: Meldung 241, Ebene 16, Status 1, Zeile 3Fehler beim Konvertieren einer Zeichenfolge in ein Datum und/oder eine Uhrzeit. Irgendwas werde ich wohl falsch machen ^^ Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 4. Dezember 2013 Melden Teilen Geschrieben 4. Dezember 2013 (bearbeitet) Dieser Befehl bringt bei mir das korrekte Ergebnis: SELECT CAST(LTRIM(20131204) AS DATETIME) Und das ganze in einer Tabelle: SELECT CAST(LTRIM(Table_1.fldDatumInteger) AS DATETIME) from Table_1 Es gibt die Tabelle Table_1, das Feld fldDatumInteger, darin steht: 20131204 Du willst zweimal Casten, das kann nicht gut gehen. bearbeitet 4. Dezember 2013 von Sunny61 Zitieren Link zu diesem Kommentar
Tef Leun 0 Geschrieben 4. Dezember 2013 Autor Melden Teilen Geschrieben 4. Dezember 2013 Hmm irgendwas scheint mit dem Feld nicht zu stimmen. Wenn ich es so schreibe wie du SELECT CAST(LTRIM(20131204) AS DATETIME) klappt es bei mir auch.. Aber wenn ich das Feld einsetze.. select CAST(ltrim(ANS_SACHGEBURTSTAG)as datetime)from dbo.ANSCHRIF; dann kommt nach wie vor: Meldung 241, Ebene 16, Status 1, Zeile 10Fehler beim Konvertieren einer Zeichenfolge in ein Datum und/oder eine Uhrzeit. Merkwürdig! Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 4. Dezember 2013 Melden Teilen Geschrieben 4. Dezember 2013 (bearbeitet) Dann zeig doch ein CREATE Table Script der Tabelle her, dann sieht man evlt. mehr. bearbeitet 4. Dezember 2013 von Sunny61 Zitieren Link zu diesem Kommentar
Tef Leun 0 Geschrieben 9. Dezember 2013 Autor Melden Teilen Geschrieben 9. Dezember 2013 Alles klar der Fehler lag an den Werten in der DB. Da waren einige korrupt. Vielen Dank Sunny61! Dieser Befehl bringt bei mir das korrekte Ergebnis: SELECT CAST(LTRIM(20131204) AS DATETIME) Und das ganze in einer Tabelle: SELECT CAST(LTRIM(Table_1.fldDatumInteger) AS DATETIME) from Table_1 Es gibt die Tabelle Table_1, das Feld fldDatumInteger, darin steht: 20131204Du willst zweimal Casten, das kann nicht gut gehen. Ok das klappt jetzt reibungslos und er gibt mir 2013-12-04 aus in der Abfrage. Kann ich das denn auch noch im selben Schritt in 104 konvertieren? Also das ich dann 04.12.2013 stehen habe? Dann wäre ich glücklich :-) Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 9. Dezember 2013 Melden Teilen Geschrieben 9. Dezember 2013 (bearbeitet) In http://msdn.microsoft.com/de-de/library/ms187928.aspx gibt es weiter unten diesen Hinweis: G.Verwenden von CAST und CONVERT mit datetime-Daten SELECT GETDATE() AS UnconvertedDateTime, CAST(GETDATE() AS nvarchar(30)) AS UsingCast, CONVERT(nvarchar(30), GETDATE(), 104) AS UsingConvertTo_ISO8601 ; GO RESULT: UsingConvertTo_ISO8601 09.12.2013 Den Rest darfst Du selbst erstellen. ;) bearbeitet 9. Dezember 2013 von Sunny61 Zitieren Link zu diesem Kommentar
Tef Leun 0 Geschrieben 10. Dezember 2013 Autor Melden Teilen Geschrieben 10. Dezember 2013 OK ich habs geschafft. Vielen Dank für deine Hilfe und Geduld. :-) Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 10. Dezember 2013 Melden Teilen Geschrieben 10. Dezember 2013 (bearbeitet) Freut mich für Dich und Danke für die Rückmeldung. ;) bearbeitet 10. Dezember 2013 von Sunny61 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.