MySQL - get latest record when date and time are two fields
For questions like this, CREATE TABLE statements together with INSERT statements for sample data is truly useful. Even better is a Fiddle or similar. Right now, all I can do is give you some ideas, but I won't be able to test it.

Looking at your query:

INSERT INTO tbl(date, time, currentOdometer, totalOdometer, vno) 
VALUES ('2020-03-21', '10:03',(SELECT Y.currentOdometer+(3200-Y.totalOdometer) 
FROM tbl Y 
WHERE timeStamp(date,time) = 
(
  SELECT MAX(timeStamp(X.date,X.time)) from tbl X 
  WHERE vno= 'ABCD') AND IMEI = 'ABCD'),3003,'ABCD'
)


There are probably some syntax errors ( un-balanced ")" for the sub-select, or at least they are in the wrong place ), but you should not use the VALUES clause together with a sub-select, better to re-write like:

INSERT INTO tbl(date, time, currentOdometer, totalOdometer, vno) 
SELECT '2020-03-21', '10:03', Y.currentOdometer+(3200-Y.totalOdometer) 
FROM tbl Y 
WHERE timeStamp(date,time) = 
(
  SELECT MAX(timeStamp(X.date,X.time)) from tbl X 
  WHERE vno= 'ABCD') AND IMEI = 'ABCD'),3003,'ABCD'
)


As a side-note, avoid using reserved words as identifiers (date, time, timestamp).

The WHERE clause also looks wrong, I assume 3003 and 'ABCD' are values for totalOdometer, vno. Is this what you mean?

INSERT INTO tbl(date, time, currentOdometer, totalOdometer, vno) 
SELECT '2020-03-21', '10:03', Y.currentOdometer+(3200-Y.totalOdometer) 
      , 3003, 'ABCD'
FROM tbl Y 
WHERE timeStamp(date,time) = (
  SELECT MAX(timeStamp(X.date,X.time)) 
  from tbl X 
  WHERE vno= 'ABCD' 
    AND IMEI = 'ABCD'
);