Datumsformate

ukulele

Datenbank-Guru
Beiträge
5.107
select convert(varchar,getdate(),121)
Ergebnis: 2011-03-30 09:24:19.737

select cast('2011-03-30 09:24:19.737' as datetime)
Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.

select cast('2011-30-03 09:24:19.737' as datetime), also yyyy-dd-mm... würde gehen. Gibts wirklich kein entsprechendes Ausgabeformat? Natürlich kann ich es von Hand per datepart zusammensetzen, aber schön ist das nicht.
 
Werbung:
Hallo ukulele,

Hier ein paar Ansätze für Datumsformate:)

--Deutsches Datum
select convert(varchar,getdate(),4)
= 30.03.11
select convert(varchar,getdate(),104)
= 30.03.2011

--Englisches Datum

select convert(varchar,getdate(),1)
= 03/30/11
select convert(varchar,getdate(),101)
= 03/30/2011

[EDIT]
Für eine Zeichenfolge würde so was gehen:
select convert(nvarchar,convert(datetime,'2011-30-03 09:24:19.737'),4)
oder
select convert(nvarchar,cast('2011-30-03 09:24:19.737' as datetime),4)

Gruß Charly
 
Hilft mir leider nicht, trotzdem danke.

Hier mal mein alter Code der das Problem aufwarf:

Code:
                SET        @anfangsdatum =    cast(    left(convert(varchar@anfangsdatum,121),11)
                                                 isnull(@anfangsstunde,'00') + ':' +
                                                 isnull(@anfangsminute,'00') + ':00.000' AS DATETIME)

So gehts dann auch:

Code:
                SET        @anfangsdatum =    cast(    cast(datepart(yyyy,@anfangsdatum) AS CHAR(4)) + '-' + 
                                                cast(datepart(dd,@anfangsdatum) AS CHAR(2)) + '-' + 
                                                cast(datepart(mm,@anfangsdatum) AS CHAR(2)) + ' ' +
                                                isnull(@anfangsstunde,'00') + ':' +
                                                isnull(@anfangsminute,'00') + ':00.000' AS DATETIME)
 
Hallo ukulele,

das Format soll also so sein:
yyyy-dd-mm hh:mi:ss.mmm
oder geht auch:
yyyy-mm-dd hh:mi:ss.mmm

Gruß Charly
 
Mein oberster Code spuckt yyyy-mm-dd hh:mi:ss.mmm mit convert(varchar@anfangsdatum,121) aus. Der wird abgeschnitten, Stunde und Minute angehängt und dann versucht er das per cast wieder in datetime zu wandeln. Geht aber nur, wenns als yyyy-dd-mm hh:mi:ss.mmm vorliegt. Und dafür gibts kein Ausgabeformat oder doch? Die 121 steht ja für mm-dd
 
Hallo ukulele,

wenn Du die Sprache auf us_english stellst funktioniert dein Select.

SET LANGUAGE N'us_english'
GO

select cast('2011-03-30 09:24:19.737' as datetime)

Hoffe das hilft Dir weiter

[EDIT]
Ist zwar nur für die aktuelle Session aber man weis ja nie...

SET LANGUAGE N'Deutsch'
GO

Gruß Charly
 
Aber du stimmst mir sicher zu das das nicht das Gelbe vom Ei ist oder? Abgesehen davon tritt das Problem im Trigger auf, da geh ich dann doch lieber den komplizierteren weg, siehe Lösung 2.
 
Werbung:
Bei einem Trigger hätte ich jetzt auch bedenken. Ich weis gar nicht ob das innerhalb eines Triggers läuft.

Aber sonst. Alles was geht wird auch gemacht.
biggrin.png


Gruß Charly
 
Zurück
Oben