如何使用SQL将整数类型的时间字段转换为标准时间格式
将整数类型的时间字段转换为常规时间格式(SQL实现)
我的数据表中,日期和时间字段均为整数数据类型,已完成日期字段的转换,现需将整数格式的时间(如830对应8:30 AM,1330对应1:30 PM)转换为带AM/PM标识的常规时间格式,示例数据如下:
| AppointmentDate | AppointmentTime | NewDate | NewTime |
|---|---|---|---|
| 20230329 | 830 | 3/29/2023 | 8:30 AM |
| 20230516 | 1330 | 5/16/2023 | 1:30 PM |
| 20230403 | 1500 | 4/3/2023 | 3:00 PM |
| 20230329 | 1020 | 3/29/2023 | 10:20 AM |
不同SQL数据库的实现方法
1. MySQL/MariaDB
通过字符串补位、时间转换与格式化函数组合实现:
SELECT AppointmentTime, DATE_FORMAT( STR_TO_DATE( LPAD(AppointmentTime, 4, '0'), -- 补前导零,将830转为0830 '%H%i' ), '%h:%i %p' -- 格式化为带AM/PM的时间样式 ) AS NewTime FROM your_table;
2. SQL Server
利用字符串拼接、时间类型转换与格式化函数:
SELECT AppointmentTime, FORMAT( CAST( STUFF(RIGHT('0' + CAST(AppointmentTime AS VARCHAR(4)), 4), 3, 0, ':') AS TIME ), 'h:mm tt' ) AS NewTime FROM your_table;
先补前导零至4位,再在第3位插入冒号将字符串转为时间格式,最后格式化输出带AM/PM的样式。
3. Oracle
通过TO_DATE和TO_CHAR函数组合处理:
SELECT AppointmentTime, TO_CHAR( TO_DATE( LPAD(AppointmentTime, 4, '0'), 'HH24MI' ), 'HH:MI AM' ) AS NewTime FROM your_table;
按24小时制解析补位后的时间字符串,再转换为12小时制带AM/PM的格式。
4. PostgreSQL
结合文本处理、时间戳转换与格式化函数:
SELECT AppointmentTime, TO_CHAR( TO_TIMESTAMP( LPAD(AppointmentTime::TEXT, 4, '0'), 'HH24MI' ), 'HH12:MI AM' ) AS NewTime FROM your_table;
将整数转为文本并补位,解析为时间戳后格式化输出目标样式。
内容的提问来源于stack exchange,提问作者user3691608
相关产品推荐
相关产品推荐

