如何将代表分钟的Integer列值转换为timestamp格式
实现方案
核心逻辑:timestamp类型包含日期部分,你可以根据需求选择用当前日期、或者自定义固定日期作为基准,将整数分钟数转为时间间隔后叠加到基准日期上即可。
MySQL 场景
- 日期部分取当前日期的写法:
UPDATE 你的表名 SET duration = DATE_ADD(CURDATE(), INTERVAL duration_temp MINUTE); - 日期部分用固定基准日期(示例为1970-01-01)的写法:
UPDATE 你的表名 SET duration = DATE_ADD('1970-01-01', INTERVAL duration_temp MINUTE);
示例中数值4会返回对应基准日期 00:04:00,符合需求。
PostgreSQL 场景
- 日期部分取当前日期的写法:
UPDATE 你的表名 SET duration = CURRENT_DATE + (duration_temp || ' minute')::INTERVAL; - 日期部分用固定基准日期的写法:
UPDATE 你的表名 SET duration = '1970-01-01'::DATE + (duration_temp || ' minute')::INTERVAL;
SQL Server 场景
- 日期部分取当前日期的写法:
UPDATE 你的表名 SET duration = DATEADD(MINUTE, duration_temp, CAST(GETDATE() AS DATE)); - 日期部分用固定基准日期的写法:
UPDATE 你的表名 SET duration = DATEADD(MINUTE, duration_temp, '1970-01-01');
操作前建议先执行SELECT语句验证转换结果,避免直接更新出错,验证示例(以MySQL为例):
SELECT duration_temp, DATE_ADD(CURDATE(), INTERVAL duration_temp MINUTE) AS 转换后结果 FROM 你的表名 LIMIT 10;
内容的提问来源于stack exchange,提问作者Dr.Noob
相关产品推荐
相关产品推荐

