Mon QuerySoustraire valeur temps sql avec une valeur de temps donnée
SELECT DATE, SEC_TO_TIME(SUM(TIME_TO_SEC( `total_hours`))) AS total
FROM work_details
WHERE `employee_id` = '28'
AND DATE
BETWEEN '2012-02-01'
AND '2012-02-29'
GROUP BY DATE
ORDER BY DATE
// qui prend le total des heures travaillées pour un employé donné en date donnée de work_details de table de base de données, total_hours est de type de temps.
Résultat
DATE total
2012-02-01 04:19:50
2012-02-02 07:38:21
2012-02-06 07:43:24
2012-02-07 07:21:36
2012-02-08 07:38:45
2012-02-09 06:05:22
2012-02-10 07:28:00
2012-02-13 07:37:38
2012-02-14 07:37:22
2012-02-15 07:35:10
2012-02-16 07:29:13
2012-02-17 07:07:23
2012-02-20 07:40:32
2012-02-21 07:43:32
2012-02-22 07:36:40
2012-02-23 07:37:57
2012-02-24 07:35:04
2012-02-27 09:54:02
2012-02-28 07:41:35
2012-02-29 04:01:11
je dois récupérer les dates où les heures de travail au total qui sont < 4 heures, afin que je puisse compter que les jours que les feuilles de la moitié. De l'aide ??
J'ai aussi essayé cette requête, j'ai donné 8 au lieu de 4, car ma table ne contient pas de données inférieures à 4 maintenant.
SELECT DATE, SEC_TO_TIME(SUM(TIME_TO_SEC( `total_hours`))) AS total,
CASE WHEN SEC_TO_TIME(SUM(TIME_TO_SEC( `total_hours`))) < (3600 *8)
THEN 1
ELSE 0
END AS half_day
FROM work_details
WHERE `employee_id` = '28'
AND DATE
BETWEEN '2012-02-01'
AND '2012-02-29'
GROUP BY DATE
Résultat
DATE total half_day
2012-02-01 07:19:50 0
2012-02-02 07:38:21 0
2012-02-06 07:43:24 0
2012-02-07 07:21:36 0
2012-02-08 07:38:45 0
2012-02-09 06:05:22 0
2012-02-10 07:28:00 0
2012-02-13 07:37:38 0
2012-02-14 07:37:22 0
2012-02-15 07:35:10 0
2012-02-16 07:29:13 0
2012-02-17 07:07:23 0
2012-02-20 07:40:32 0
2012-02-21 07:43:32 0
2012-02-22 07:36:40 0
2012-02-23 07:37:57 0
2012-02-24 07:35:04 0
2012-02-27 09:54:02 0
2012-02-28 07:41:35 0
2012-02-29 08:01:11 0
me laisser vérifier, dis un :) –
DATE SELECT, SEC_TO_TIME (SUM (TIME_TO_SEC (' total_hours'))) AS total FROM work_details WHERE 'employee_id' = '28' ET DATE ENTRE '2012-02-01' ET '2012-02-29' GROUPE PAR DATE ORDONNER PAR DATE AVOIR HEURE (totale) <4; c'est ce que tu voulais dire? renvoie cette erreur mais, # 1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'HAVING HOUR (total) <4 LIMIT 0, 30' à la ligne 9 –
Placez 'HAVING' avant le' ORDER BY', après 'GROUP BY' . –