我已经写了一个这样的准备语句并且工作正常。
BEGIN
SET @tempaccountID :=CONCAT('\'',accountID1,'\'');
SET @tempdeviceID := CONCAT('\'',deviceID1,'\'');
SET @query :=CONCAT('select accountID,
deviceID,
FROM_UNIXTIME(timestamp) as timestamp,
statusCode,
latitude,
longitude,
speedKPH,
heading,
address,
odometerKM,
Charging
from ',(SELECT eventtableName FROM migration_run_time WHERE accountID=accountId1 AND deviceID=deviceID1),
' where accountID=',@tempaccountID,
' and deviceID=',@tempdeviceID,
' and latitude!=0.0 and longitude!=0.0 and speedKPH<120 and timestamp= (select max(timestamp) from ', (SELECT eventtableName FROM migration_run_time WHERE accountID=accountId1 AND deviceID=deviceID1) ,
' where accountID=',@tempaccountID,
' and deviceID=',@tempdeviceID,
' and latitude!=0.0 and longitude!=0.0 and speedKPH<120);');
PREPARE stmt FROM @query;
EXECUTE stmt;
现在遇到大问题
我想在语句中使用 Convert_tz 来获取所需时间格式的时间,如下所示
convert_tz(FROM_UNIXTIME(timestamp),device.timeZone,device.requiredTimeZone) as timestamp
// device是上面语句中的另一个表
如果我以上述方式编写,我必须在列名的 fromt 中为表名添加前缀,但事件表本身是在运行时根据 accountID 和 deviceID 计算的。
我应该如何处理它...
PS 我在 mysql 方面做得很差。我是一个 >net/jQuery 开发人员,对 mysql 没有任何想法。请帮忙.. :(