如何将SQL数据库中整数格式存储的时间转换为HH:MM标准时间格式
整数格式DocTime字段转换为HH:MM格式的实现方案
以下是两种常用场景下的实现方法,均已覆盖整数0转00:00的需求:
场景1:直接在SQL查询阶段完成转换
可以在取数时直接处理,无需后续二次加工,不同数据库的实现语法如下:
- MySQL
SELECT *, TIME_FORMAT(STR_TO_DATE(LPAD(DocTime, 4, '0'), '%H%i'), '%H:%i') AS DocTime_formatted FROM 你的表名
- SQL Server
SELECT *, FORMAT(DocTime, '00\:00') AS DocTime_formatted FROM 你的表名
- PostgreSQL
SELECT *, TO_CHAR(LPAD(DocTime::TEXT, 4, '0'), '99:99') AS DocTime_formatted FROM 你的表名
核心逻辑是先给不足4位的整数补前导零到4位,再按前两位小时、后两位分钟的规则插入冒号,整数0补零后为0000,转换后自动得到00:00。
场景2:使用Python Pandas处理已查询到的数据集
如果已经将数据读取为Pandas DataFrame,可以用以下代码批量转换:
import pandas as pd # df为你从数据库查询得到的DataFrame df["DocTime_formatted"] = df["DocTime"].astype(str) \ .str.zfill(4) \ .apply(lambda x: f"{x[:2]}:{x[2:]}")
额外说明
如果原始数据存在非法时间值(如小时超过23、分钟超过59),可以在转换后新增校验逻辑过滤异常值,避免后续业务出错。
内容的提问来源于stack exchange,提问作者Zahid Israil
相关产品推荐
相关产品推荐

