MySQL中TIMESTAMPADD函数是否支持为TIME类型添加时间间隔
MySQL
TIMESTAMPADD() 对TIME类型的支持性结论 - 这个行为是官方正式支持的,不是什么未文档化的边缘特性。相关说明没有放在
TIMESTAMPADD()单独的函数说明页,而是归类在MySQL 5.6版本时间类型系统的整体升级文档中。 - 自MySQL 5.6版本起,所有时间运算类内置函数统一做了TIME类型适配:当传入参数为TIME类型时,函数不会隐式补全日期部分把值转成DATETIME类型再计算,而是直接按照时间间隔语义做运算,返回值也对应为TIME类型。
- 这个适配和MySQL 5.6对TIME类型的能力升级直接配套:5.6版本把TIME类型的合法取值范围扩展到了
-838:59:59到838:59:59,除了日常的时分秒语义外,也承载了时间长度/时间间隔的语义,支持TIMESTAMPADD()这类间隔计算函数是设计内的能力。
注意不要和5.5及更早版本的隐式转换行为混淆:旧版本传入TIME类型参数时,会自动补全当前会话日期把值转为DATETIME再计算,返回值必然是DATETIME类型,和5.6之后原生支持TIME类型计算的逻辑有本质区别。
- 该特性从5.6版本上线至今,跨所有5.6小版本、5.7版本、8.0版本的行为完全稳定,没有出现过计算逻辑或返回类型的不兼容变更,生产环境可以放心使用。
- 你跑的测试用例返回结果,和MySQL官方测试套件中覆盖的TIME类型
TIMESTAMPADD()运算场景的预期结果完全匹配。
内容的提问来源于stack exchange,提问作者ysth
相关产品推荐
相关产品推荐

