我对php中的sql查询有疑问。在登录当前日期和时间被转换为存储在数据库中的'strtotime'。注销时间也输入到数据库中。一个人可以多次登录一天。
我想列出过去7天的每个用户登录时间(每个用户分别为每天)。我使用了以下查询
"SELECT a.user_id, b.username, a.clock_in,a.clock_out , DATEDIFF(a.clock_in,a.clock_out) FROM " . DB_PREFIX . "clock_history a left join " . DB_PREFIX . "user b on a.user_id=b.user_id WHERE clock_in between '".$prestrtime."' and '".$curren."' and clock_status=0 and b.status=1 ORDER BY id DESC "
下面给出了表格格式
id user_id clock_in clock_out clock_status
1 1 1419829200 1419829800 0
2 2 1419829200 1419851689 0
3 1 1419851633 1419851677 0
虽然每天使用此查询记录不能分开。 请帮帮我..等待你的回复!
答案 0 :(得分:0)
您可以从MYSQL查询计算最近7天,见下文
SELECT a.user_id, b.username, a.clock_in,a.clock_out ,
DATEDIFF(FROM_UNIXTIME(a.clock_in),FROM_UNIXTIME(a.clock_out))
FROM " . DB_PREFIX . "clock_history a
left join " . DB_PREFIX . "user b on a.user_id=b.user_id
WHERE clock_in between UNIX_TIMESTAMP(date_sub(now(),INTERVAL 1 WEEK)) and UNIX_TIMESTAMP(now())
and clock_status=0 and b.status=1
ORDER BY id DESC
<强>更新强>
DATE_DIFF()
函数使用两个日期而不是时间戳,因此使用FROM_UNIXTIME()
函数将时间戳转换为日期
DATEDIFF(a.clock_in,a.clock_out)
到
#it return days, if you need hours then `/24` of total days
DATEDIFF(FROM_UNIXTIME(a.clock_in),FROM_UNIXTIME(a.clock_out))
答案 1 :(得分:0)
试试这个
SELECT a.user_id, b.username, a.clock_in,a.clock_out,
DATEDIFF(FROM_UNIXTIME(a.clock_in), FROM_UNIXTIME(a.clock_out)) as days
FROM " . DB_PREFIX . "clock_history a
LEFT JOIN " . DB_PREFIX . "user b on a.user_id=b.user_id
WHERE clock_in BETWEEN UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY))
AND UNIX_TIMESTAMP(NOW())
AND clock_status=0 AND b.status=1
ORDER BY id DESC
这将为您提供过去7天的记录,它使用内置函数NOW()
和DATE_SUB()
的mysql。