Jump to content

integer-Datumswert in Datumsformat umwandeln


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 Geburtstag
from dbo.KUNDE inner join dbo.ANSCHRIF
on 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.

 

 

Link zu diesem Kommentar

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 Geburtstag
from dbo.KUNDE inner join dbo.ANSCHRIF
on dbo.KUNDE.KUN_NUMMER = dbo.ANSCHRIF.ANS_NUMMER

 

Da bringt er dann:

Meldung 241, Ebene 16, Status 1, Zeile 3
Fehler beim Konvertieren einer Zeichenfolge in ein Datum und/oder eine Uhrzeit.

 

Irgendwas werde ich wohl falsch machen ^^

Link zu diesem Kommentar

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 von Sunny61
Link zu diesem Kommentar

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 10
Fehler beim Konvertieren einer Zeichenfolge in ein Datum und/oder eine Uhrzeit.

 

Merkwürdig!

Link zu diesem Kommentar

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: 20131204

Du 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 :-)

Link zu diesem Kommentar

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 von Sunny61
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...