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

SQL中将字符串格式的24小时制时间转换为12小时制的方法

SQL将字符串型24小时制时间转换为12小时制格式

假设你的数据表中存储的时间是类似'0800'、'1430'这样的4位字符串(对应24小时制的时分),以下是不同SQL数据库的转换方案:

MySQL/MariaDB

先将字符串转换为数据库可识别的时间类型,再格式化为12小时制:

SELECT 
  original_time,
  DATE_FORMAT(STR_TO_DATE(original_time, '%H%i'), '%h:%i %p') AS twelve_hour_time
FROM your_table;
  • STR_TO_DATE(original_time, '%H%i'):把4位字符串按24小时制时分解析为时间类型
  • DATE_FORMAT(..., '%h:%i %p'):将时间格式化为HH:MM AM/PM的12小时制格式,午夜'0000'会转为12:00 AM

SQL Server

先补全时间格式为HH:mm,再转换并格式化:

SELECT 
  original_time,
  FORMAT(CONVERT(TIME, STUFF(original_time, 3, 0, ':')), 'hh:mm tt') AS twelve_hour_time
FROM your_table;
  • STUFF(original_time, 3, 0, ':'):在4位字符串的第3位插入冒号,将'1430'转为'14:30'
  • FORMAT(..., 'hh:mm tt'):将时间格式化为带AM/PM标识的12小时制格式

PostgreSQL

通过时间戳转换和格式化函数实现:

SELECT 
  original_time,
  TO_CHAR(TO_TIMESTAMP(original_time, 'HH24MI'), 'HH12:MI AM') AS twelve_hour_time
FROM your_table;
  • TO_TIMESTAMP(original_time, 'HH24MI'):按24小时制时分解析字符串为时间戳
  • TO_CHAR(..., 'HH12:MI AM'):将时间戳格式化为12小时制,自动匹配AM/PM

注意事项

  • 确保原字符串是4位有效时间值(范围0000-2359),若存在无效值,可使用TRY_CONVERT(SQL Server)、TRY_CAST或CASE语句处理,避免转换报错
  • 不同数据库的函数语法存在差异,请根据实际使用的数据库选择对应方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:47:16