Mysql 使用timediff减去时间

Mysql 使用timediff减去时间,mysql,Mysql,救命啊。我在mysql中有这个查询。它所做的是合并三个表中的字段。一个字段持续时间h减去结束时间和开始时间。五月时间数据的形式仅为时间,而非日期时间。所以我决定使用timediff函数。这在同一天的时间内运行良好。但不是像00:00-23:30这样的时差;在这种情况下,我得到的答案是-23.5。我能做些什么来纠正这个问题。提前谢谢 SELECT `tblproductiondata`.`productionDay` , `tbllinestoppagecategories`.`category`

救命啊。我在mysql中有这个查询。它所做的是合并三个表中的字段。一个字段持续时间h减去结束时间和开始时间。五月时间数据的形式仅为时间,而非日期时间。所以我决定使用timediff函数。这在同一天的时间内运行良好。但不是像00:00-23:30这样的时差;在这种情况下,我得到的答案是-23.5。我能做些什么来纠正这个问题。提前谢谢

SELECT `tblproductiondata`.`productionDay` , `tbllinestoppagecategories`.`category` , `tblshifts`.`ID` , `tblstoppagedescriptions`.`endTime` , `tblstoppagedescriptions`.`startTime` , IFNULL( ROUND( `tblstoppagedescriptions`.`duration(mins)` /60, 2 ) , ROUND( (
TIME_TO_SEC( TIMEDIFF( `tblstoppagedescriptions`.`endTime` , `tblstoppagedescriptions`.`startTime` ) ) /3600 ) , 2 )
) AS `Duration (h)`
FROM (
`tbllinestoppagecategories`
INNER JOIN `tblstoppagereasons` ON `tbllinestoppagecategories`.`categoryID` = `tblstoppagereasons`.`stoppagecategory`
)
INNER JOIN (
`tblshifts`
INNER JOIN (
`tblproductiondata`
INNER JOIN `tblstoppageDescriptions` ON `tblproductiondata`.`productionID` = `tblstoppagedescriptions`.`prodDate`
) ON `tblshifts`.`ID` = `tblproductiondata`.`shiftName`
) ON `tblstoppageReasons`.`resID` = `tblstoppagedescriptions`.`stoppageReason`
WHERE (
(
(
`tbllinestoppagecategories`.`category`
) <> "Changeover Maintenance Activities"
)
)
ORDER BY `tblproductiondata`.`productionDay` ASC
试一试


哪些字段包含开始日期和结束日期?TBLSTopageDescriptions.startTime和TBLSTopageDescriptions.endTime。我只在这两个字段中处理时间,这两个字段是时间字段,但您是否将日期存储在其他字段中?为了计算时间差,你还必须知道这两个日期。我在包含日期的tblproductiondata表和包含时间的tblstoppagedescriptions表之间有一对多的关系。你看,我想存储某一天机器上发生的问题。因此,tblstoppagedescriptions表中的时间归因于tblproductiondata表中的特定天数多亏了Arilla,查询仍然产生相同的结果。我已经意识到,即使在连接之后,由于tblproductiondata表的结构,结果也将是相同的。给定的生产日(如2013年12月24日)为2013年12月24日06:00至2013年12月25日06:00。这意味着,即使我将productionDay与时间连接起来,处理时间00:00和23:30的timediff函数仍然会产生相同的结果,因为日期是相同的。我会把时间改成datetime格式。谢谢你的帮助,如果没有它,我是不会意识到这一点的。比如说,我不时地替换数据。timediff函数现在给出的结果是null。有什么想法吗?我想我终于明白了问题是数据本身,我将所有字段更改为datetime并输入了新数据。
TIME_TO_SEC(
    TIMEDIFF( 
        CONCAT(tblproductiondata.productionDay, ' ', tblstoppagedescriptions.endTime),  
        CONCAT(tblproductiondata.productionDay, ' ', `tblstoppagedescriptions`.`startTime`)
    )
)