在SQL Server中计算DATEDIFF(月)

时间:2014-12-12 09:19:33

标签: sql-server sql-server-2008 datediff

我使用DateDiff函数查找两个日期之间的月数。但我面临的问题就是,如果差异是1个月和3天,则不会给出2个月。

SELECT * 
FROM tablename 
WHERE 
    DATEDIFF(month, CONVERT(DATE, CONVERT(DATE, '20/10/2013', 103), 120),
                    CONVERT(DATE, CONVERT(DATE, '25/11/2013', 103), 120)) > 2   

结果应该是2但是给出1

表格中的日期列varchar类型值存储为dd/mm/yyyy。即使是一个月中的某一天也应计算为1个月

1 个答案:

答案 0 :(得分:0)

得到答案

ALTER FUNCTION [dbo].[CalculateNumberOfMonths]
(
    @date1 varchar(50),
    @date2 varchar(50)
)

RETURNS varchar(10)

AS

BEGIN

declare @days int
declare @months int
select @days = datediff(day,CONVERT(DATE,@date1,103),CONVERT(DATE,@date2,103)) 
select @months = datediff(month,CONVERT(DATE,@date1,103),CONVERT(DATE,@date2,103)) 

if(@days % 7 >0)
begin
set @months= @months + 1
end

RETURN @months

END