如何在SQL中计算MM/DD/YYYY HH:MM格式字符串时间的间隔分钟数?
没问题!不管是用Python的datetime模块,还是SQL里的DATEDIFF类函数,都能轻松搞定你要的日期时间差计算需求。我分两种常用场景给你详细拆解:
Python 实现方式
首先得把字符串格式的日期时间转换成Python能识别的datetime对象,这一步用datetime.strptime()就能搞定——它可以按照你指定的格式解析字符串。
具体步骤和代码示例:
- 先导入
datetime模块 - 用
strptime()把你的startdate和enddate字符串转成datetime对象,格式符用%m/%d/%Y %H:%M(完全对应MM/DD/YYYY HH:MM的格式) - 两个
datetime对象直接相减会得到一个timedelta对象,把它的总秒数除以60就是你要的总分钟数
from datetime import datetime start_str = "1/26/2018 12:07" end_str = "1/29/2018 8:27" # 转换为datetime对象 start_dt = datetime.strptime(start_str, "%m/%d/%Y %H:%M") end_dt = datetime.strptime(end_str, "%m/%d/%Y %H:%M") # 计算时间差并转换为分钟 time_diff = end_dt - start_dt total_minutes = int(time_diff.total_seconds() / 60) print(total_minutes) # 输出结果:4541,和你例子里的数值一致
SQL 实现方式
如果是在数据库里处理数据,DATEDIFF(或类似函数)完全支持计算分钟间隔,不过首先得把字符串转成数据库的日期时间类型,不同数据库的转换函数略有区别:
MySQL 版本
MySQL里用STR_TO_DATE()来转换字符串,然后用TIMESTAMPDIFF()直接计算分钟差(比原生DATEDIFF更精准,因为DATEDIFF默认按天计算):
SELECT TIMESTAMPDIFF(MINUTE, STR_TO_DATE('1/26/2018 12:07', '%m/%d/%Y %H:%i'), STR_TO_DATE('1/29/2018 8:27', '%m/%d/%Y %H:%i')) AS total_minutes;
执行这个查询会直接返回4541,正好是你要的结果。
SQL Server 版本
SQL Server可以用TRY_CONVERT()(或者CONVERT())把字符串转成datetime类型,再用DATEDIFF()计算分钟差:
SELECT DATEDIFF(MINUTE, TRY_CONVERT(datetime, '1/26/2018 12:07'), TRY_CONVERT(datetime, '1/29/2018 8:27')) AS total_minutes;
这个语句同样会返回4541。
总的来说,核心逻辑都是先把字符串格式的日期时间转换成标准的日期时间类型/对象,再做差值计算并转换成分钟数,两种场景都能完美满足你的需求~
内容的提问来源于stack exchange,提问作者Salvador Martinez
相关产品推荐
相关产品推荐

