Manuel Streck: Datum ohne Uhrzeit

Hi!

Ich möchte in ein Datetime oder SmallDatetime Feld meiner MS Sql Datenbank das aktuelle Datum schreiben. Das DBMS stellt mir hierfür die Funktion GetDate() zur Verfügung. Leider wird damit die aktuelle Uhrzeit mitgespeichert.
Eine MS SQL Faq schlägt:
Convert(datetime,convert(char(10),GetDate(),104))  vor.
(Quelle: http://www.berndjungbluth.de/sqlfaq/faqa7.htm#A7.1. )

Als Ergebnis bekomme ich aber:
2005-11-28 00:00:00.000

Wie kann ich das datum im dd.mm.yyyy Format speicher?

Gruß

  1. Hallo Manuel,

    Eine MS SQL Faq schlägt:
    Convert(datetime,convert(char(10),GetDate(),104))  vor.
    (Quelle: http://www.berndjungbluth.de/sqlfaq/faqa7.htm#A7.1. )

    Als Ergebnis bekomme ich aber:
    2005-11-28 00:00:00.000

    Wie kann ich das datum im dd.mm.yyyy Format speicher?

    gar nicht, das ist nicht vorgesehen. MS SQL-Server speichert Datums- oder Zeitangaben nicht als Zeichenkette. Wie die Transact-SQL-Referenz von MS SQL Server Dir sagt, speichert dieser beim Datentyp DATETIME als zwei vier Byte lange Zahlen, bei SMALLDATETIME als zwei zwei Byte lange Zahlen. Für die Ausgabe in dem von Dir gewünschten Format verwende erneut CONVERT

    CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

    mit dem Wert 104 für Style, siehe Onlinehandbuch.

    Der Tipp, den Du zitierst sorgt dafür, dass der Zeitanteil stets gleich ist, wie Du in der Ausgabe lesen kannst. Somit kannst Du stets in ganzen Tagen rechnen.

    Freundliche Grüße

    Vinzenz

    1. Guten Morgen!

      Wie kann ich das datum im dd.mm.yyyy Format speicher?

      gar nicht, das ist nicht vorgesehen. MS SQL-Server speichert Datums- oder Zeitangaben nicht als Zeichenkette.

      Wenn ich aber mein Datum im Format dd.mm.yyyy an die Datenbank gebe (ich habe es z.B. über ASP.Net oder Java vorher so formatiert), steht es eben auch in der vor mir gewünschten Form in der Datenbank.
      Da drängt sich mir der verdacht auf, dass ich mein Problem nur innerhalb der Datenbank nicht lösen kann, was ich aber möchte.

      Gruß

      1. Hi!

        OK, ich gebe dir Recht. Offenbar wird in Datumsfeldern die Uhrzeit nicht angezeitg, wenn sie 00:00:00:000 ist.

        Gruß