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

Datumsformate

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von ukulele, 30 März 2011.

  1. ukulele

    ukulele Datenbank-Guru

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

    Charly Datenbank-Guru

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

    ukulele Datenbank-Guru

    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)
     
  4. Charly

    Charly Datenbank-Guru

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

    ukulele Datenbank-Guru

    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
     
  6. Charly

    Charly Datenbank-Guru

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

    ukulele Datenbank-Guru

    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.
     
  8. Charly

    Charly Datenbank-Guru

    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.[​IMG]

    Gruß Charly
     

Diese Seite empfehlen