关于Mysql 5.6 TIMESTAMPDIFF>=和>的一个问题

请问一下,为什么查询出来1那个地方的数据是大于0的,但是2那个地方必须得用>=才行,用>就没有数据了呢?图片描述

图片描述

创建表:

CREATE TABLE `contract` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `emp_id` int(11) DEFAULT NULL COMMENT '员工id',
  `sign_time` datetime DEFAULT NULL COMMENT '签订时间',
  `end_time` datetime DEFAULT NULL COMMENT '截止时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='劳动合同';
CREATE TABLE `employee_detail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL COMMENT '姓名',
   `stage` varchar(100) DEFAULT NULL ,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='员工信息详情';

插入数据:

INSERT INTO `contract` (`id`, `emp_id`,`sign_time`, `end_time`) VALUES ('25', '83', '2018-11-21 00:00:00', '2018-12-01 15:27:00');
INSERT INTO `contract` (`id`, `emp_id`,`sign_time`, `end_time`) VALUES ('26', '94', '2018-11-21 00:00:00', '2018-12-01 15:23:00');

INSERT INTO `employee_detail` (`id`, `name`, `stage`) VALUES ('83', '张三', '1');
INSERT INTO `employee_detail` (`id`, `name`, `stage`) VALUES ('94', '李四', '1');

sql查询语句:

SELECT
    c.*
FROM
    contract c
JOIN employee_detail e ON c.emp_id = e.id
WHERE
    e.stage != - 1
AND (
    TIMESTAMPDIFF(
        MINUTE,
        '2018-11-30 09:18:23',
        c.end_time
    )
) >= 0
AND TIMESTAMPDIFF(
    MONTH,
    '2018-11-30 09:18:23',
    c.end_time
) = 0
阅读 2.9k
1 个回答

stage的数值有没有变化呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题