MySQL:依据另一表中的符号对时间戳加减指定分钟数
解决时间戳按存储的分钟偏移量加减的问题
正确查询语句
SELECT start_time AS original_timestamp, DATEADD(minute, CONVERT(INT, (SELECT offset_in_minutes FROM offset_table)), start_time) AS updated_timestamp FROM students_table;
问题原因
你之前的写法里,直接把nvarchar类型的偏移值和时间戳相加,SQL会自动将字符串转成整数,然后默认以秒为单位累加时间,导致+300实际只加了300秒,和预期的300分钟不符。
方案说明
DATEADD(minute, ...)明确指定按分钟来调整时间,彻底避免单位混淆CONVERT(INT, offset_in_minutes)把存储的带符号字符串转成整数,正负号会被完整保留,无需手动编写加减逻辑- 直接复用表中存储的偏移值,完全匹配你要求的使用规则
内容的提问来源于stack exchange,提问作者Lily
相关产品推荐
相关产品推荐

