mysql 日期相减,并将结果以“x天x小时x分钟”显示

两个日期相减:

if 
( b.assign_time - str_to_date(a.create_time, '%Y-%m-%d %H:%i:%s' ) > 0,
  NULL,
  CONCAT(
  IF(FLOOR( HOUR ( TIMEDIFF( str_to_date(a.create_time, '%Y-%m-%d %H:%i:%s' ),b.assign_time ) ) / 24 ) = 0,
    '',
    CONCAT( FLOOR( HOUR ( TIMEDIFF( str_to_date(a.create_time, '%Y-%m-%d %H:%i:%s' ), b.assign_time ) ) / 24 ), '天' ) ),
  IF(FLOOR( HOUR ( TIMEDIFF( str_to_date(a.create_time, '%Y-%m-%d %H:%i:%s' ),b.assign_time ) ) / 24 ) >= 1,
   IF(MOD ( HOUR ( TIMEDIFF( str_to_date(a.create_time, '%Y-%m-%d %H:%i:%s' ),b.assign_time ) ), 24 ) = 0,'0小时',
     CONCAT( MOD ( HOUR ( TIMEDIFF( str_to_date(a.create_time, '%Y-%m-%d %H:%i:%s' ),b.assign_time ) ), 24 ), '小时' ) ),
   IF(MOD ( HOUR ( TIMEDIFF( str_to_date(a.create_time, '%Y-%m-%d %H:%i:%s' ),b.assign_time ) ), 24 ) = 0,
     '',
     CONCAT( MOD ( HOUR ( TIMEDIFF( str_to_date(a.create_time, '%Y-%m-%d %H:%i:%s' ),b.assign_time ) ), 24 ), '小时' ) ) ),
  IF(MINUTE ( TIMEDIFF( str_to_date(a.create_time, '%Y-%m-%d %H:%i:%s' ),b.assign_time ) ) = 0,
    '1分钟',CONCAT( MINUTE ( TIMEDIFF( str_to_date(a.create_time, '%Y-%m-%d %H:%i:%s' ),b.assign_time ) ), '分钟' ) ) ) )

三个日期相减(全部换算成秒后计算):

CONCAT(	case when ((CASE b.process_state  WHEN 'UNAUDITED' THEN 1 WHEN 'REJECTREVIEW' THEN 1 ELSE 0 END) *24*60*60
						            -TIMESTAMPDIFF( SECOND,a.create_time, now( ) ))<0 then '-' else'' end ,			
					CONCAT(
						IF ( (FLOOR((CASE b.process_state  WHEN 'UNAUDITED' THEN 1 WHEN 'REJECTREVIEW' THEN 1 ELSE 0 END) *24*60*60
						            -TIMESTAMPDIFF( SECOND,a.create_time, now( ) )) / (24*60*60)) = 0, '0',
									FLOOR(abs(((CASE b.process_state  WHEN 'UNAUDITED' THEN 1 WHEN 'REJECTREVIEW' THEN 1 ELSE 0 END) 
									*24*60*60-TIMESTAMPDIFF( SECOND,a.create_time, now( ) )) / (24*60*60)))), '天' ) ,
					CONCAT(
					 IF ( FLOOR(((CASE b.process_state  WHEN 'UNAUDITED' THEN 1 WHEN 'REJECTREVIEW' THEN 1 ELSE 0 END) *24*60*60
					              -TIMESTAMPDIFF( SECOND,a.create_time, now( ) )) mod (24*60*60)/3600) = 0, '0',
									FLOOR(abs(((CASE b.process_state  WHEN 'UNAUDITED' THEN 1 WHEN 'REJECTREVIEW' THEN 1 ELSE 0 END) 
									*24*60*60-TIMESTAMPDIFF( SECOND,a.create_time, now( ) )) mod (24*60*60)/3600))), '小时' ) ,
					CONCAT(
					 IF ( FLOOR(((CASE b.process_state  WHEN 'UNAUDITED' THEN 1 WHEN 'REJECTREVIEW' THEN 1 ELSE 0 END) *24*60*60
					             -TIMESTAMPDIFF( second,a.create_time, now( ) )) mod (24*60)/60) = 0, '0',
									TIME_FORMAT(SEC_TO_TIME(abs((CASE b.process_state  WHEN 'UNAUDITED' THEN 1 WHEN 'REJECTREVIEW' THEN 1 ELSE 0 END) 
									*24*60*60-TIMESTAMPDIFF( SECOND,a.create_time, now( ) ))), '%i')),'分钟' )						
				 
				)

now()  当前具体的日期和时间

curdate()  当前日期

curtime()   当前时间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值