我试图从数据库中抽出合同用完时间。我现在有了这个查询,但是我似乎无法弄清楚为什么to_expire字段为NULL。查询运行正常,并产生除计算的timediff之外的预期结果。 cs_start和cs_end是日期字段

  SELECT cs_start, cs_end, cs_status,
 TIMEDIFF(date(now()),  cs_start) as to_expire,
 GROUP_CONCAT(is_name SEPARATOR '<br /> ') as partners
  FROM `contracttoinstitute`
  JOIN `institutes`
    ON is_id = ctt_institute_id
  JOIN `contracts`
    on ctt_contract_id  = cs_id
 WHERE ctt_contract_id
    IN (
      select ctt_contract_id
        from `contracttoinstitute`
       where ctt_institute_id = 1
       )
   AND ctt_institute_id <> 1
  GROUP BY ctt_contract_id
  ORDER BY cs_id DESC


输出:

 cs_start cs_end cs_status to_expire partners
2013-11-06  2014-01-01  signed  NULL    KATHOLIEKE HOG
...


希望能得到一些价值。不知道应该给timediff些什么;我第一次尝试使用它。 (我正在寻找一个值进行排序,以便确定合同是否即将失效)

最佳答案

尝试使用datediff()。您超出了timediff()的范围,并且似乎仍然需要几天的时间:

  SELECT cs_start, cs_end, cs_status,
         datediff(date(now()),  cs_start) as to_expire,
         GROUP_CONCAT(is_name SEPARATOR '<br /> ') as partners

关于mysql - 时差返回NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21076498/

10-13 08:49