如何将DateTime时间四舍五入到最近半小时并生成指定格式新列?
实现方案
你需要的是按向下取最近的半小时整数倍、最终秒位固定为0的规则转换时间,以下是不同常用场景的实现代码:
1. MySQL 环境
SELECT DateTime, DATE_FORMAT( FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(DateTime) / 1800) * 1800), '%Y-%m-%d %H:%i:00' ) AS Converted FROM 你的表名;
原理:1800是半小时对应的秒数,先将时间转为时间戳除以1800向下取整,再还原为时间格式化即可。
2. SQL Server 环境
SELECT DateTime, DATEADD(MINUTE, DATEDIFF(MINUTE, 0, DateTime) / 30 * 30, 0) AS Converted FROM 你的表名;
原理:计算从基准时间到当前时间的总分钟数,除以30取整再乘以30,加回基准时间就得到半小时取整结果,自动秒位为0。
3. Python Pandas 环境
如果是用Python处理数据表:
import pandas as pd # 假设df是你的数据表,DateTime列已转为datetime64类型 df['Converted'] = df['DateTime'].dt.floor('30min').dt.strftime('%Y-%m-%d %H:%M:00')
原理:用pandas内置的floor方法直接按30分钟向下取整,再格式化输出即可,完全匹配你给出的示例结果。
内容的提问来源于stack exchange,提问作者UDAYA KUMAR R
相关产品推荐
相关产品推荐

