mysql计算超过两个日期

标签 mysql

我有一个 sql 查询,可以在开始和结束相遇时计算分配的小时数。

这是我的sqlfiddle

http://sqlfiddle.com/#!2/9f7634/1

SELECT `Nickname`, `taxemployee_id`, `taxemployee`.`id`, `taxemployee`.`Position`, COALESCE((datediff (`end`, `start`) + 1), 0) * `assigned_hours` as assigned_hours, start,end
FROM (`taxemployee`) 
LEFT JOIN `project_staff_assignment` ON `project_staff_assignment`.`taxemployee_id` = `taxemployee`.`id` 
    AND start >= '2014-09-01' AND end <= '2014-09-15'
    AND end <= '2014-09-15' AND start >= '2014-09-01'    
GROUP BY `taxemployee`.`id` 
ORDER BY `Nickname` ASC

查询显示 2014-09-01 到 2014-09-15 之间的所有记录。

如果我有一条记录,起始值为 2014-09-01,结束值为 2014-09-30,我无法在这些日期之间获得任何结果。

这是我的插入记录。

(7, 5, 'Senior2', 12, '7', '2014-09-01', '2014-09-30', 'active')

我需要根据上面的查询返回值。也许我的查询是错误的

最佳答案

让我们从这个开始......

SELECT t.Nickname
     , psa.taxemployee_id
     , t.id
     , t.Position
     , psa.start
     , psa.end
  FROM taxemployee t 
  LEFT 
  JOIN project_staff_assignment psa
    ON psa.taxemployee_id = t.id;

+----------+----------------+----+-----------------+------------+------------+
| Nickname | taxemployee_id | id | Position        | start      | end        |
+----------+----------------+----+-----------------+------------+------------+
| Walter   |           NULL |  1 | Partner         | NULL       | NULL       |
| Eric     |           NULL |  2 | Partner         | NULL       | NULL       |
| Richard  |           NULL |  3 | Partner         | NULL       | NULL       |
| Elaine   |              4 |  4 | Senior Manager  | 2014-08-18 | 2014-08-22 |
| Tan-tan  |           NULL |  5 | Senior Manager  | NULL       | NULL       |
| Alvin    |              6 |  6 | Senior Manager  | 2014-08-01 | 2014-08-15 |
| Alvin    |              6 |  6 | Senior Manager  | 2014-08-18 | 2014-08-22 |
|          |           NULL |  7 | Senior Manager  | NULL       | NULL       |
| Jackie   |           NULL |  8 | Manager 2       | NULL       | NULL       |
| Ayee     |              9 |  9 | Manager 2       | 2014-08-01 | 2014-08-01 |
| Dan      |             10 | 10 | Manager 2       | 2014-08-11 | 2014-08-15 |
| Acel     |           NULL | 11 | Manager 1       | NULL       | NULL       |
| Nim      |             12 | 12 | Manager 1       | 2014-09-01 | 2014-09-30 |
| Joem     |           NULL | 13 | Asst. Manager 2 | NULL       | NULL       |
| Jen      |           NULL | 14 | Asst. Manager 2 | NULL       | NULL       |
| Joanne   |             15 | 15 | Asst. Manager 2 | 2014-08-25 | 2014-08-29 |
| Berenice |           NULL | 16 | Asst. Manager 1 | NULL       | NULL       |
+----------+----------------+----+-----------------+------------+------------+

现在,给定这个中间结果,期望的结果会是什么样子?

关于mysql计算超过两个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25173513/

相关文章:

php - 获取两个日期之间所有星期日的日期PHP Mysql

Mysql事件没有被调用

sql - MySql中utf8_general_ci和utf8_unicode_ci有什么区别?

MYSQL <> 运算符代替 NOT IN

php - 在 CodeIgniter 中,如何使用分页参数从 Controller 调用 ajax url

mysql - 无法将 Coldfusion 10 连接到 mysql 5

php - 多个 MySQL 查询在本地计算机上运行,​​但在远程计算机上运行不正常

mysql - 最好关闭表 SELECT QUERY

MySQL:字段长度。真的有关系吗?

mysql - 在 Mac 操作系统上安装 Hive-2.1.1 出现错误 ‘Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient’