Можно вот так попробовать.
Я убрал из select  дублирующиеся поля users.`users_id` и user_dolg.`user_id`
Так как по полю user_dolg.`date` происходит отбор, но оно не включено в список агрегирующих полей, нужно к 
нему применить агрегирующую функцию, например так MAX(user_dolg.`date`) либо добавить поле в список агрегирующих полей.
Так как вы присоединяете таблицу `users` левым джойном, то в случае отсутствия в ней записи по users_id в поля этой таблицы вернется значение NULL нужно бы обработать этот случай используя функцию ISNULL например или IFNULL. Если же в таблице  `users` всегда есть запись для users_id  из таблицы user_dolg, то лучше бы LEFT OUTER JOIN заменить на INNER JOIN. Я в запросе написал вариант с INNER JOIN. 
SELECT DISTINCT 
       users.`users_id`,
       users.`name`,
       user_dolg.`date`,
       SUM(user_dolg.hours)  AS sub_hours
  FROM `user_dolg` 
 INNER JOIN `users`
    ON users.`users_id` = user_dolg.`user_id`
 WHERE user_dolg.`date` BETWEEN  '" . $starttime . "' AND '" . $endtime . "'
 GROUP BY users.`users_id`, users.`name`, user_dolg.`date`
HAVING COUNT(1) > 1