Wie zu verwenden DATEDIFF zurückzukehren, Jahr, Monat und Tag?

Wie kann ich mit DATEDIFF zurück die Differenz zwischen zwei Datumsangaben in Jahren, Monaten und Tagen, die in SQL Server 2005

DATEDIFF (date , Datum)

Wie Ergebnis: 2 Jahr 3 Monat 10 Tage

Kann jemand vervollständigen dieses t-sql?

ALTER FUNCTION [dbo].[gatYMD](@dstart VARCHAR(50), @dend VARCHAR(50))
RETURNS VARCHAR(50) AS
BEGIN
    DECLARE @yy INT
    DECLARE @mm INT
    DECLARE @getmm INT
    DECLARE @dd INT

    SET @yy = DATEDIFF(yy, @dstart, @dend)
    SET @mm = DATEDIFF(mm, @dstart, @dend)
    SET @dd = DATEDIFF(dd, @dstart, @dend)
    SET @getmm = ABS(DATEDIFF(mm, DATEADD(yy, @yy, @dstart), @dend))

    RETURN (
        Convert(varchar(10),@yy) + 'year' + Convert(varchar(10),@mm) + 'month'  + Convert(varchar(10),@dd) + 'day'
        )
END
  • 23year 280month 8506day ?
  • Beachten Sie, dass im Allgemeinen, die Frage ist schlecht definiert. Betrachten wir zwei Termine, in den letzten Speicher: 2009-02-25 2009-03-28-und. Mein Verdacht ist, dass die zu erwartende Antwort wäre 0 Jahren, 1 Monat, 3 Tage. Was 2009-02-25-und 2009-03-05? Und 2009-03-25-und 2009-04-05? 2009-02-25-und 2009-04-05? Die erste davon sein könnte, sein soll, 0y, 0m, 8d; der zweite könnte sein, 0y, 0m, 11d; ich bin nicht sicher über die Dritte - wohl 0y, 1m, 11d. Was 2000-02-29 und 2003-01-31? 2000-02-29 und 2003-02-28?
InformationsquelleAutor monkey_boys | 2009-10-09
Schreibe einen Kommentar