我使用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个月
答案 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