Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak używać DATEDIFF do zwracania roku, miesiąca i dnia?

Utwórz tę funkcję, da ona dokładną różnicę dat, na przykład rok, miesiące, dni

    Create function get_Exact_Date_diff(@date smalldatetime,@date2 smalldatetime)
 returns varchar(50)

    as

    begin

    declare @date3 smalldatetime

    Declare @month int,@year int,@day int

     if @date>@date2
     begin
     set @[email protected]
     set @[email protected]
     set @[email protected]
     end



    SELECT @month=datediff (MONTH,@date,@date2)

    if dateadd(month,@month,@date) >@date2
    begin
    set @[email protected]
    end
    set @day=DATEDIFF(day,dateadd(month,@month,@date),@date2)

    set @[email protected]/12
    set @[email protected] % 12

    return (case when @year=0 then '' when @year=1 then convert(varchar(50),@year ) + ' year ' when @year>1 then convert(varchar(50),@year ) + ' years ' end)
    + (case when @month=0 then '' when @month=1 then convert(varchar(50),@month ) + ' month ' when @month>1 then convert(varchar(50),@month ) + ' months ' end)
    + (case when @day=0 then '' when @day=1 then convert(varchar(50),@day ) + ' day ' when @day>1 then convert(varchar(50),@day ) + ' days ' end)

    end


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Monitorowanie bazy danych SQL Server TempDB przy użyciu widoków zarządzania dynamicznego (DMV)

  2. Naruszenie błędu ograniczenia PRIMARY KEY SQL

  3. Ograniczenie rekurencji do pewnego poziomu - Zduplikowane wiersze

  4. Grupuj wiersz według sumy określonej kolumny równej określonej wartości

  5. Dobry sposób na użycie aliasu tabeli w instrukcji Update?