当前位置: 代码网 > it编程>数据库>Mysql > mysql学习使用-时间差计算并返回 x天x小时x分钟

mysql学习使用-时间差计算并返回 x天x小时x分钟

2025年11月27日 Mysql 我要评论
MySql学习使用 第一章 时间差计算并返回 x天x小时x分钟 目录 MySql学习使用@[TOC](目录) 前言一、查询sql二、说明1、参数说明2、效果说明 前言 要求

MySql学习使用

第一章 时间差计算并返回 x天x小时x分钟


前言

要求返回当前系统时间和一个时间字符串的差值,单位为天、小时、分钟。


一、查询sql

SELECT 
IF
	(
		str_to_date( `presetTime`, '%Y-%m-%d %H:%i:%s' ) - now( ) > 0,
		NULL,
		CONCAT(
		IF
			(
				FLOOR( HOUR ( TIMEDIFF( str_to_date( `presetTime`, '%Y-%m-%d %H:%i:%s' ), now( ) ) ) / 24 ) = 0,
				'',
				CONCAT( FLOOR( HOUR ( TIMEDIFF( str_to_date( `presetTime`, '%Y-%m-%d %H:%i:%s' ), now( ) ) ) / 24 ), '天' ) 
			),
		IF
			(
				FLOOR( HOUR ( TIMEDIFF( str_to_date( `presetTime`, '%Y-%m-%d %H:%i:%s' ), now( ) ) ) / 24 ) >= 1,
			IF
				(
					MOD ( HOUR ( TIMEDIFF( str_to_date( `presetTime`, '%Y-%m-%d %H:%i:%s' ), now( ) ) ), 24 ) = 0,
					'0小时',
					CONCAT( MOD ( HOUR ( TIMEDIFF( str_to_date( `presetTime`, '%Y-%m-%d %H:%i:%s' ), now( ) ) ), 24 ), '小时' ) 
				),
			IF
				(
					MOD ( HOUR ( TIMEDIFF( str_to_date( `presetTime`, '%Y-%m-%d %H:%i:%s' ), now( ) ) ), 24 ) = 0,
					'',
					CONCAT( MOD ( HOUR ( TIMEDIFF( str_to_date( `presetTime`, '%Y-%m-%d %H:%i:%s' ), now( ) ) ), 24 ), '小时' ) 
				) 
			),
		IF
			(
				MINUTE ( TIMEDIFF( str_to_date( `presetTime`, '%Y-%m-%d %H:%i:%s' ), now( ) ) ) = 0,
				'1分钟',
				CONCAT( MINUTE ( TIMEDIFF( str_to_date( `presetTime`, '%Y-%m-%d %H:%i:%s' ), now( ) ) ), '分钟' ) 
			) 
		) 
	) AS timeOutPeriod
FROM TABLE WHERE ID = 'XXX'

效果展示:在这里插入图片描述

二、说明

1、参数说明

1、IF(A, B, C) 条件判断:
若A判断满足,则返回B值,否则返回C
2、str_to_date(A,B)字符串转换:
将字符串A,转化为对应格式B的时间字段。
3、FLOOR(X):
该函数返回X的最大整数值,但不能大于X。
4、MOD(N,M):
该函数返回N除以M后的余数。
5、CONCAT(str1,str2,…):
将字符串str1、str2等进行拼接。
6、MINUTE (TIME):
返回时间的分钟,范围为0至59。
7、HOUR(TIME):
返回时间的小时部分。返回值的范围为0至23的小时值。然而,TIME值的范围实际上要大得多,所以HOUR可以返回大于23的值。
8、TIMEDIFF(date1,date2):
返回两个TIME或DATETIME值之间的差值(格式相同)。

2、效果说明

计算天,使用hour函数获取时间,如果预定时间和当前系统时间只差除去24小时,余数大于0,则向下取整作为天数。
计算小时,取两个时间之间的差值,再除去24,取余数。
计算分钟,取两个时间分钟差值。
其中还添加了其余判断,如果天数大于1,小时不足1小时,展示为1天0小时1分钟。
如果分钟不足1,直接展示1分钟。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com