gpt4 book ai didi

MySql 将多个时间戳查询分组在同一个查询中

转载 作者:行者123 更新时间:2023-11-30 01:02:20 26 4
gpt4 key购买 nike

我正在尝试编写一个 MySQL 函数,该函数使我能够汇总员工在设定时间段(即 1 天、1 周、1 个月等)内完成的工作量。完成的每一项工作都会生成 1 个 ID 条目在数据库中。

条目的日期设置为时间戳。

我的问题是,我不清楚如何对数据库进行多次调用,以检查在设定的时间戳期间内生成了多少条目。

下面是数据库表

CREATE TABLE staffwork(
staff_id MEDIUMINT UNSIGNED NOT NULL,


id_of_work_inserted MEDIUMINT UNSIGNED NOT NULL,
job_id MEDIUMINT UNSIGNED NOT NULL,

data_table VARCHAR (65) NOT NULL,
entrytime int(11) NOT NULL,

INDEX message (staff_id)


);

下面是将数据放入表中的查询,即时间戳:

INSERT INTO staffwork
(staff_id, job_id, id_of_work_inserted, data_table, entrytime )
VALUES ('$staff_id', '$job_id', '$id_of_job', '$data_table', UNIX_TIMESTAMP(now()) )";

下面是我的 SQL 函数:

函数 statsForEmployeesWork ($staff_id) { 全局 $dbc;

$select = " SELECT 
COUNT(job_id) AS totalWorkDone,
COUNT(job_id) AS oneDaysWorkDone,
COUNT(job_id) AS oneWeekWorkDone,
COUNT(job_id) AS oneMonthWorkDone
";

$from = " FROM
staffwork
";

$where = " WHERE
staff_id = '$staff_id
AND
entrytime >= now() - interval '1 day'
AND
entrytime >= now() - interval '1 week'
AND
entrytime >= now() - interval '1 month '";

$query = $select.$from. $where;

$result = mysqli_query ($dbc, $query)

return $result ;
}

我非常感谢对此的一些帮助和建议。

最佳答案

你的entrytime字段是一个int,这意味着你不能使用直接的mysql日期数学,你最终会做类似的事情

12345678 > '2013-11-14'

这毫无意义。将日期范围转换为整数,或将整数字段转换为普通日期:

WHERE FROM_UNIXTIME(entrytime) >= now() - interval 1 day
WHERE entrytime >= UNIX_TIMESTAMP(now() - interval 1 day)

更好的是,将输入时间转换为实际的日期时间字段,然后您的原始查询将按预期工作。

关于MySql 将多个时间戳查询分组在同一个查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20005016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com