2016-07-29 36 views
0

Ich habe diese zwei Tabellen, die, wenn Benutzer anmeldet ich aktuellen Stimestamp in Timein Tabelle mit den Feldern ID Int 11 Auto Inc., user_id und Zeit die similaer Weise, die ich für Logout jetzt meine Frage ist, wie konnte ich insgesamt Anmeldezeiten erhalten durch Berechnung von Zeitein- und Zeitüberschreitungs-Tabellen mit den Feldern Zeit, die aktueller Zeitstempel ist? Tag und Monat weiseHolen Sie sich die gesamte Stunden von Tim und Timout-Tabelle jemand?

dies ist, wie mein Schema wie

CREATE TABLE IF NOT EXISTS `timein` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `member_id` int(11) NOT NULL, 
    `member_name` varchar(32) NOT NULL, 
    `team` varchar(32) NOT NULL, 
    `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

CREATE TABLE IF NOT EXISTS `timeout` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `member_id` int(11) NOT NULL, 
    `member_name` varchar(32) NOT NULL, 
    `team` varchar(32) NOT NULL, 
    `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 
+0

Ihr Schema sieht falsch aus, nach meinem Verständnis, wie Sie die Beziehung zwischen Login-Zeit und Abmeldezeit verwalten. Was ist eine Beziehung zwischen diesen 2 Tabellen? –

Antwort

0

Verwendung Für calculate Stunde sieht timestampdiff Funktion

select *,concat(timestampdiff(hour, a.time, b.time),' hours') from timeout b,timein a 
where a.id=b.id 

Anstatt zu zeigen, nur in Stunden, Abfrage unten in Monat zeigen können, Tag und Stunde.

select 

if(timestampdiff(month,a.time,b.time)>0,concat(timestampdiff(month,a.time,b.time),' month'), 

if(datediff(b.time,a.time)>0, concat(datediff(b.time,a.time),' day'), 

concat(timestampdiff(hour,a.time,b.time),' hours')))time from timein a,timeout b 

where b.id=a.id;