日期:2014-05-18 浏览次数:20714 次
--当前时间是假如是 6月6日 1 select datediff(Month,'2012-06-1 00:00:00.000',getdate()) --这个查询就是0 2 select datediff(Month,'2012-05-16 00:00:00.000',getdate()) --这个查询等于1
1 select datediff(dd,'2012-06-1 00:00:00.000',getdate()) --这个查询就是0 2 select datediff(dd,'2012-05-16 00:00:00.000',getdate()) --这个查询等于1
------解决方案--------------------
declare @dt datetime set @dt='2012-05-16 00:00:00.000' select case when day(@dt)>day(getdate()) then datediff(Month,@dt,getdate())-1 else datediff(Month,@dt,getdate()) end
------解决方案--------------------
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba') BEGIN DROP TABLE tba END GO CREATE TABLE tba ( ID INT, Date VARCHAR(10) ) GO INSERT INTO tba SELECT 1,'2012-05-12' UNION SELECT 1,'2012-06-11' UNION SELECT 1,'2012-04-15' UNION SELECT 1,'2012-03-18' UNION SELECT 1,'2012-05-19' SELECT DATE,CASE WHEN DATEADD(MONTH,DATEDIFF(MONTH,Date,GETDATE()),Date) <= GETDATE() THEN DATEDIFF(MONTH,Date,GETDATE()) ELSE DATEDIFF(MONTH,Date,GETDATE()) - 1 END AS '月份' FROM tba DATE 月份 2012-03-18 2 2012-04-15 1 2012-05-12 1 2012-05-19 0 2012-06-11 0
------解决方案--------------------
declare @date1 datetime, @date2 datetime select @date1 = '2012-02-29', @date2 = '2012-03-28' select datediff(month, @date1, @date2) + (case when day(@date2) > day(@date1) then 1 else 0 end) - --满一个月,不满两个月 显示2 (case when datediff(month, @date1, @date2) = 1 and day(@date2) < day(@date1) then 1 else 0 end) --如果满一个月 就是1 不满一个月 就是0
------解决方案--------------------
DATEDIFF(MONTH,日期1,日期2)是按月份的差,即'2012-6-1'与'2012-6-6'是同一月份,差是0 ,而'2012-5-16'差是1.楼主所说的满一个月是什么概念,30天称一个月吗? 满一个月是1,满一个月不满2个月是二,这个怎么界定?概念搞清楚,就不难了,可以按天算!