规格:我在OSX Yosemite上使用MySQL 5.6和SQLWorkbench,SequelPro
查询背景:我正在尝试为周末和银行假日更正一组TIMESTAMPDIFF
个持续时间。我有2个存储过程,它们给我两个日期之间的星期六,星期日和银行假期的数量 - 这些工作正常。为了得到更正的TIMESTAMPDIFF
,我因此将星期六,星期日和假日的数量乘以24来得到要减去的小时数,然后从TIMESTAMPDIFF
中减去该数字。
示例:例如,如果时间戳A在星期五是14:00,时间戳B在星期二是14:01,则原始TIMESTAMPDIFF
是96:01:00。假设星期一是假期,周末是48:00:00,我想从96:01:00减去72:00:00,以获得24:01:00的“营业日差异”。
问题:当我执行"96:01:00" - "72:00:00" as date_sub_test
之类的操作时,我会得到24
。我丢失了所有格式,包括01分钟。持续时间不是DATETIME
,因为它们与日历日期不对应,因此我无法使用DATE_ADD
/ DATE_SUB
。
问题:我应该如何从持续时间中减去时间,保留格式和相关的基础60系统,例如每小时60分钟,而不是100?
提前致谢!
答案 0 :(得分:1)
您是否尝试过TIMEDIFF功能? https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff
TIMEDIFF是我一直在寻找的。我还在ABS()中添加了负时差,而MAKETIME()则从整数中创建了一个时间。
答案 1 :(得分:0)
使用SEC_TO_TIME
和TIME_TO_SEC
之类的
SELECT SEC_TO_TIME(TIME_TO_SEC('96:01:00')-TIME_TO_SEC('72:00:00'))
您可以像这样使用ABS
SELECT SEC_TO_TIME(ABS(TIME_TO_SEC('96:01:00')-TIME_TO_SEC('172:00:00')))