mysql 判断日期间隔是否为3个月,mysql 的if的用法,临时变量的用法,mysql的 between and...

mysql 判断日期间隔是否为3个月

1:月份之间至少为3个月,并且两者之间的日子,必须是大于或者是等于(例如:开始日期 20120105,日子是5号,结束日期是20120405,日子也是5号,那么月份相差是3一个月+日子相同(或者结束日期的日子,大于开始日期的日子),  这样就是间隔3个月,或者是3个月以上了 )

2:间隔4个月以上

 

 

mysql月份间隔的函数

 

SELECT PERIOD_DIFF('201212', '201209'); -- 月份的间隔。函数的格式是 的格式为“YYYYMM” 或者 “YYMM”,返回 3 SELECT DATEDIFF('20120401','20120101') -- 返回间隔的日子,返回91(即使是包含2月份,那么3个月之和应该也大于90,不严谨) SELECT DATEDIFF('20120801','20120501') -- 返回间隔的日子,返回91 SELECT EXTRACT(YEAR_MONTH FROM '20120201'); -- 返回年月 201202 SELECT DAY('20120530') -- 返回天数 30



 
那么在存储过程,就是这样写
 
DELIMITER $$

USE `xxxxxx`$$

DROP PROCEDURE IF EXISTS `fn_search_xxxx`$$

CREATE DEFINER=`root`@`%` PROCEDURE `fn_search_xxxx`(p_UserId VARCHAR(64),p_StartDate DATETIME,p_EndDate DATETIME)
BEGIN
SET   @p_StartDate_month=EXTRACT(YEAR_MONTH FROM p_StartDate); -- 获取的是年月 例如 20120203返回的是201202
SET   @p_EndDate_month=EXTRACT(YEAR_MONTH FROM p_EndDate); 

SELECT COUNT(0) AS 回答数,
IF(	(PERIOD_DIFF(@p_EndDate_month, @p_StartDate_month)=3 AND DAY(p_EndDate)>DAY(p_StartDate)) OR 	
	(PERIOD_DIFF(@p_EndDate_month, @p_StartDate_month)>3) 	,
	DATE_FORMAT(`AnswerDate`,'%Y-%m-01'),
	DATE_FORMAT(`AnswerDate`,'%Y-%m-%d')
	) AS 回答日期
FROM `tabletemp`
WHERE `UserId`=p_UserId AND `AnswerDate` BETWEEN p_StartDate AND p_EndDate
GROUP BY 回答日期;
END$$

DELIMITER ;
 
这里有一个 if 方法
 
IF(	a > b	, dosomethingA , dosomethingB  ) AS 回答日期
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/joeylee/archive/2012/12/03/2799611.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值