Mysql 为什么使用别名的时差不起作用? 选择 t、 伊梅, t、 日期, t、 时间开始了, t、 点火, t、 tripStartStop, 选择 分钟 从…起 全球定位系统数据 哪里 时间>t时间 和日期>=t.date 和imei='358480088853405' 和tripStartStop=0 “停止时间”, 子时间“开始时间”、“停止时间”作为差异 从…起 全球定位系统数据 哪里 imei='358480088853405' 日期>='2020-03-08' 日期

Mysql 为什么使用别名的时差不起作用? 选择 t、 伊梅, t、 日期, t、 时间开始了, t、 点火, t、 tripStartStop, 选择 分钟 从…起 全球定位系统数据 哪里 时间>t时间 和日期>=t.date 和imei='358480088853405' 和tripStartStop=0 “停止时间”, 子时间“开始时间”、“停止时间”作为差异 从…起 全球定位系统数据 哪里 imei='358480088853405' 日期>='2020-03-08' 日期,mysql,Mysql,你不能用那样的别名。查询: SUBTIME('startTime','stopTime') 将startTime和stopTime视为字符串,因此为00:00:00 您可以执行以下操作: select q.imei, q.date, q.startTime, q.ignition, q.tripStartStop, q.stopTime, subtime(q.startTime, q.stopTime) from ( SELECT t.imei , t.dat

你不能用那样的别名。查询:

SUBTIME('startTime','stopTime')
将startTime和stopTime视为字符串,因此为00:00:00

您可以执行以下操作:

select q.imei, q.date, q.startTime, q.ignition, 
       q.tripStartStop, q.stopTime, subtime(q.startTime, q.stopTime)
from (
  SELECT t.imei
       , t.date 
       , t.time startTime
       , t.ignition
       , t.tripStartStop
       , ( SELECT min(time) from gps_data where time>t.time and date>=t.date and imei='358480088853405' and tripStartStop=0 ) 'stopTime'
  from gps_data t 
  where 
    imei='358480088853405' 
     and date between '2020-03-08' and '2020-03-09' 
     and tripStartStop=1
) as q

您需要在子字符串中使用select语句选择“开始时间”和“停止时间”。那会解决你的问题

子时间选择开始时间,选择停止时间

SELECT t.imei
     , t.date 
     , t.time startTime
     , t.ignition
     , t.tripStartStop
     , ( SELECT min(time) from gps_data where time>t.time and date>=t.date and imei='358480088853405' and tripStartStop=0 ) ' stopTime'
     , SUBTIME(SELECT(startTime),SELECT(stopTime)) diff 
  from gps_data t 
 where imei='358480088853405' 
   and date>='2020-03-08' 
   and date<='2020-03-09' 
   and tripStartStop=1````

共享输出错误?仅显示“00:00:00”时没有显示错误,尽管从较小的内容中减去较大的内容显然很奇怪尝试了从较小的内容中减去较大的内容和从较大的内容中减去较小的内容这两种方法在选择中都不可用。您需要重复计算。