我对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
虽然每天使用此查询记录无法分离。请帮助我..等待您的回复!
您可以从 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))
试试这个
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 天的记录,它使用 mysql 的内置函数NOW()
和DATE_SUB()
。