2016-07-29 6 views
0

私はこの2つのテーブルを持っています。ユーザーがログインするときに、現在のIDをテーブルに保存します。id int 11 auto inc、user_id、similaerという方法でログアウトします。現時点のタイムスタンプであるフィールドtimeinとtimeoutテーブルから計算します。日と月の賢いtiminとtimoutテーブルから合計時間を取得しますか?

これは、私のスキーマは、計算時間の使用timestampdiff機能

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

だけではなく時間で、以下のクエリは月に表示することができます表示するために

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

ログイン時間とログアウト時間の関係をどのように管理するかによって、あなたのスキーマは間違っています。これら2つのテーブル間の関係は何ですか? –

答えて

0

どのように見えるかです日と時間。

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; 
関連する問題