sql怎麼計算兩個日期中有多少個自然月
不知道你什麼資料庫
如果是 Oracle , 使用 MONTHS_BETWEEN 函式
例如:
SQL> SELECT
2 MONTHS_BETWEEN(TO_DATE(‘2013-12-21’, ‘YYYY-MM-DD’), sysdate) AS have_months
3 FROM
4 dual;
HAVE_MONTHS
——————-
11。1162298
如果是 SQL Server, 使用 DATEDIFF
例如:
1> SELECT DATEDIFF(mm, GETDATE(), ‘2013-12-21’) AS [數值]
2> GO
數值
——————-
11
(1 行受影響)
我就不解釋了,你自己看一下吧
select month(‘2012-1-3’)-month(‘2011-7-3’)+1+(year(‘2012-1-3’)-year(‘2011-7-3’))*12
datediff(month,日期1,日期2)
沒太理解你截圖程式碼什麼意思,我下面的例子可以透過輸入年月得到該月份的總週數,使用的資料庫是sql server 2005
declare @year int,@month int,@tempdata datetime,@sumday money
select @year=2015,@month=11
——先拼接成引數月份的第一天
select @tempdata=convert(varchar(4),@year)+‘-’+convert(varchar(2),@month)+‘-01’
——統計引數月份總天數
select @sumday=datediff(day,@tempdata,dateadd(month,1,@tempdata))
——計算引數月份一共幾周
seelct ceiling((@sumday-(case when datename(weekday,@tempdata)=‘星期一’ then 7。0
when datename(weekday,@tempdata)=‘星期二’ then 6。0
when datename(weekday,@tempdata)=‘星期三’ then 5。0
when datename(weekday,@tempdata)=‘星期四’ then 4。0
when datename(weekday,@tempdata)=‘星期五’ then 3。0
when datename(weekday,@tempdata)=‘星期六’ then 2。0 else 1。0 end))/7。0)+1