2017-02-06 14 views
1

Ich habe eine Tabelle mit einem Feld namens "Stunden", dieses Feld ist die Zeit, die meine Arbeiter pro Tag arbeiten, es erstellt eine neue Registrierung für jeden Tag, also ist es in etwa so:Summe pro Tag, Woche und Monat

Date: 2017-02-06; hours: 3 
Date: 2017-02-07; hours: 8 
Date: 2017-02-31; hours: 8 

Die Frage ist, wie kann ich ein ausgewähltes tue alles für diesen Tag, um die Stunden zu summieren (das ist schon gelöst), für diese Woche und für diesen Monat.

Was ich erwarte, ist dies:

Summe für diesen Tag (2017.02.06): 3

Summe für diese Woche (2017-02-06-2017--2017-02-12): 11

Summe für diesen Monat (Februar): 19

Original-Abfrage:

$db->query("select sum(hours) horasDia from table_hours where                
user="'.$user.'" and DATE(inici)=date('Y-m-d')); 

ich tue dies über ph p.

EDIT: Mit der Antwort von rahul_m:

für Tag,

SELECT SUM(`hours`) horasDia 
FROM  table_hours 
WHERE  user="'.$user.'" and DATE(inici)= your_date; 

Für Woche

SELECT SUM(`hours`) horasDia 
FROM  table_hours 
WHERE  user="'.$user.'" and DATE(inici)= your_date; 
GROUP BY WEEK(your_date); 

Für Monat

SELECT SUM(`hours`) horasDia 
FROM  table_hours 
WHERE  user="'.$user.'" and DATE(inici)= your_date; 
GROUP BY DATE_FORMAT(your_date, "%m-%Y"); 

In der Woche Abschnitt es' nur die Stunden nach dem Datum 2017.01.31 (2017.01.30 Woche)

SELECT SUM(`hours`) horasDia 
FROM  table_hours 
WHERE  user="'.$user.'" and DATE(inici)= "2017-01-31"; 
GROUP BY WEEK("2017-01-31"); 

Im Monat Abschnitt s mir geben, es gibt mir einfach nichts.

SELECT SUM(`hours`) horasDia 
FROM  table_hours 
WHERE  user="'.$user.'" and DATE(inici)= "2017-01-31"; 
GROUP BY DATE_FORMAT("2017-01-31", "%m-%Y"); 

Vielleicht mache ich etwas falsch.

+1

Bitte geben Datenabtastwert und erwartete Ausgabe – GurV

+0

und zeigen Sie Ihre Abfrage, die (nach Tag) arbeiten –

+0

Wochen für die aktuellen Daten für Daten geben gehört, dass nur Tag, ich hoffe, ich bin klar, – rahulsm

Antwort

1

für Tag,

SELECT SUM(`hours`) horasDia 
FROM  table_hours 
WHERE  user="'.$user.'" and DATE(inici)= your_date; 

Für Woche

SELECT SUM(`hours`) horasDia 
FROM  table_hours 
WHERE  user="'.$user.'" and DATE(inici)= your_date; 
GROUP BY WEEK(your_date); 

Für Monat

SELECT SUM(`hours`) horasDia 
FROM  table_hours 
WHERE  user="'.$user.'" and DATE(inici)= your_date; 
GROUP BY YEAR(o_date), MONTH(o_date) 

Sie werden alle drei Angaben nach Ihren Wünschen mit diesem bekommen, es geben ein Versuchen.

EDIT

zugehörigen Daten der

Woche richtig ist, da es nur alle Daten dieser Woche gibt.

Monate

Für Monat

SELECT SUM(`hours`) horasDia 
FROM  table_hours 
WHERE  user="'.$user.'" and DATE(inici)= your_date; 
GROUP BY YEAR(your_date), MONTH(your_date) 
+0

Danke für die Antwort, aber es funktioniert nicht für mich bisher, in der Woche die Daten in der WHERE-Klausel verwendet wird die gleiche, die in der Gruppe von verwendet wird? Und weil es nicht funktioniert, meine ich in der Woche, dass es nicht gut läuft, und in dem Monat zeigt es mir nichts. – Akaishu

+0

Verzeihung, können Sie Ihr Problem wieder löschen – rahulsm

+0

Ich aktualisierte den Beitrag, so dass es klarer ist – Akaishu

Verwandte Themen