You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark中12小时制字符串时间转24小时制失败求助

12小时制字符串转24小时制时间解决方案

首先要明确:date_format函数的作用是格式化已解析的日期时间对象,直接用它处理原始的12小时制字符串必然返回null,因为它无法识别非标准格式的纯文本。针对0123P这类格式(两位小时+两位分钟+上午/下午标识),需要分两步处理:先把字符串解析为合法的日期时间对象,再转换为24小时制格式。

MySQL环境处理方案

结合STR_TO_DATE和DATE_FORMAT函数实现转换:

SELECT DATE_FORMAT(STR_TO_DATE('0123P', '%h%i%p'), '%H:%i:%s') AS converted_time;
  • STR_TO_DATE('0123P', '%h%i%p'):按照%h(12小时制小时)、%i(分钟)、%p(AM/PM标识)的规则,把字符串解析为日期时间对象
  • DATE_FORMAT(..., '%H:%i:%s'):将解析后的对象按%H(24小时制小时)、%i(分钟)、%s(秒,自动补零)的格式输出,最终得到13:23:00

Python环境处理方案

使用datetime模块的strptime和strftime方法:

from datetime import datetime

time_str = '0123P'
# 解析字符串为datetime对象
dt_obj = datetime.strptime(time_str, '%I%M%p')
# 转换为24小时制格式
converted_time = dt_obj.strftime('%H:%M:%S')
print(converted_time)  # 输出:13:23:00
  • %I对应12小时制小时(01-12),%M对应分钟,%p对应AM/PM标识
  • %H对应24小时制小时(00-23),%M对应分钟,%S对应秒

常见问题排查

如果仍返回null,大概率是格式符使用错误:

  • 不要混淆%h/%I(12小时制)和%H(24小时制)
  • 确保AM/PM标识的大小写匹配:比如MySQL的%p只识别AM/PM或am/pm,若字符串是a/p,需先预处理补全为am/pm

内容的提问来源于stack exchange,提问作者Amrutha K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 07:27:26