How to convert an integer to year month and days in SQL server?

How to convert an integer to year month and days in SQL server?

In this article, how to convert an integer to year month and days in SQL server, If you wanted something like elapsed time, you really have to do it between two dates, and not from an integer the elapsed number of months depends on whether the month has 28 to 31 days in it; same for a year some years have 365, leap years have 366 days.

SELECT  [YEARS ]        = DATEDIFF(YEAR,0,ET-ST)-1,

        [MONTHS]        = DATEPART(MONTH,ET-ST)-1,

        [DAYS]          = DATEPART(DAY,ET-ST)-1,

        [HOURS]         = DATEPART(HOUR,ET-ST),

        [MINUTES]       = DATEPART(MINUTE,ET-ST),

        [SECONDS]       = DATEPART(SECOND,ET-ST),

        [Milliseconds]  = DATEPART(millisecond,ET-ST)

FROM
        (

        SELECT 

                ST = CONVERT(datetime,'2008/09/22 00:35:33.997'),

                ET = CONVERT(datetime,'2009/10/23 04:05:45.443')

        ) abc

Output

YEARS  MONTHS DAYS HOURS MINUTES SECONDS Milliseconds
0             1               0        3           30           11              447

2021-10-03