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

标签 mysql datetime unix-timestamp

我正在尝试编写一个 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/

相关文章:

php - MySQL 错误 1054

mysql - 如何通过查询编写复杂的订单

ruby-on-rails - ruby 日期数学 : Why off by a day

php - PHP 中的 NOW() 函数

c# - 如何使用 Ruby 将时间从 .net 纪元转换为 Unix 纪元中的时间?

javascript - 在 JavaScript 中访问 MySQL COUNT(*) 结果对象

php - PHP 中的错误 $date2 = $date1->format ('Y-m-d' )

PHP - mktime 在 mysql 中存储错误的日期

timezone - Unix 时间戳 'Z' 中的 '120314170138Z' 是什么意思?

php - 我无法在行中显示我的数据库元素