Announcement

Collapse
No announcement yet.

getdate() auf 00:00:00 runden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • getdate() auf 00:00:00 runden

    Hallo zusammen,

    ich habe noch ein Datumsproblem:

    Wenn ich eine Abfrage wie folgende mache...

    select dateadd(dd,-(datepart(dw,getdate())-1),getdate()) as 'Erster Tag der Woche'

    ...bekomme ich folgendes Ergebnis geliefert: 2007-07-02 12:38:45.463

    Wenn ich aber nun alle Änderungen seit Montag 2007-07-02 00:00:00.000 erfassen will, fallen alle Änderungen die vor 12:38 getätigt wurden durchs Raster.

    Mit CONVERT kann ich leider nicht arbeiten, da ich mit den Ergebnissen dann nicht vernünftig weiter arbeiten kann. Ich habe schon mit dem Gedanken gespielt, die obige dateadd-Funktion auch auf hh, mi und ss anzuwenden und dann ineinander zu verschachteln. Diese Lösung ist allerdings nicht praktikabel, da dabei ein totaler Wahnsinn herauskommt.

    Deshalb meine Frage:
    Kennt jemand eine einfache Lösung wie ich über getdate() das aktuelle Datum á la 2007-07-02 00:00:00.000 (also zurück gerundet auf Mitternacht) zurück geliefert bekomme?

  • #2
    Hallo,
    ich verwende folgende Funktion zum Abschneiden der Zeit (ohne Runden):

    create function [dbo].[fn_date_only] ( @datetime datetime )
    returns datetime
    as
    begin
    return convert ( datetime , convert ( varchar , @datetime , 101 ), 101 );
    end

    Comment


    • #3
      Super!!

      select dbo.fn_date_only(getdate()) liefert mir dann den Wert 2007-07-02 00:00:00.000 zurück.

      Vielen Dank!!

      Comment

      Working...
      X