Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menghitung jumlah bulan penuh antara dua tanggal dalam SQL

Postingan asli memiliki beberapa bug... jadi saya menulis ulang dan mengemasnya sebagai UDF.

CREATE FUNCTION FullMonthsSeparation 
(
    @DateA DATETIME,
    @DateB DATETIME
)
RETURNS INT
AS
BEGIN
    DECLARE @Result INT

    DECLARE @DateX DATETIME
    DECLARE @DateY DATETIME

    IF(@DateA < @DateB)
    BEGIN
        SET @DateX = @DateA
        SET @DateY = @DateB
    END
    ELSE
    BEGIN
        SET @DateX = @DateB
        SET @DateY = @DateA
    END

    SET @Result = (
                    SELECT 
                    CASE 
                        WHEN DATEPART(DAY, @DateX) > DATEPART(DAY, @DateY)
                        THEN DATEDIFF(MONTH, @DateX, @DateY) - 1
                        ELSE DATEDIFF(MONTH, @DateX, @DateY)
                    END
                    )

    RETURN @Result
END
GO

SELECT dbo.FullMonthsSeparation('2009-04-16', '2009-05-15') as MonthSep -- =0
SELECT dbo.FullMonthsSeparation('2009-04-16', '2009-05-16') as MonthSep -- =1
SELECT dbo.FullMonthsSeparation('2009-04-16', '2009-06-16') as MonthSep -- =2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Database Sistem SQL Server – Pemeliharaan Tempdb

  2. Cara Memperbaiki Kesalahan "fungsi datediff mengakibatkan overflow" di SQL Server

  3. ROLLBACK TRUNCATE di SQL Server

  4. bagaimana cara mendeklarasikan variabel global di SQL Server ..?

  5. Cara membuat server tertaut untuk SQL Server 2008 di mana kami memiliki database dari tahun 2000 dan 2005