Tested in build PGSQL (14300) and MSSQL (14306)
MSSQL:
select ts.id "TimeSheet ID", sdu.firstname "Technician Name", LONGTODATE(ts.starttime) "Timesheet Start Date", LONGTODATE(ts.endtime) "Timesheet End Date", CONVERT(varchar, ((ts.totaltime)/1000) / 3600) + ':' + RIGHT('0' + CONVERT(varchar,((ts.totaltime)/1000) % 3600 / 60), 2) + ':' + RIGHT('0' + CONVERT(varchar, ((ts.totaltime)/1000) % 60), 2)
"Total Time Spent", tsd.name "Approve Timesheet Status" from Timesheet ts LEFT JOIN timesheetstatusdefinition tsd ON ts.statusid=tsd.id LEFT JOIN SDUser sdu ON ts.technicianid=sdu.userid
PGSQL:
select ts.id "TimeSheet ID", sdu.firstname "Technician Name", LONGTODATE(ts.starttime) "Timesheet Start Date", LONGTODATE(ts.endtime) "Timesheet End Date",cast((ts.Totaltime)/1000 * '1 second'::interval as varchar) "Total Time Spent", tsd.name "Approve Timesheet Status" from Timesheet ts LEFT JOIN timesheetstatusdefinition tsd ON ts.statusid=tsd.id LEFT JOIN SDUser sdu ON ts.technicianid=sdu.userid