计算MySQL和PHP中的日期差异

时间:2016-05-17 03:38:32

标签: php mysql date difference

假设我们有一个MYSQL数据库,'雇员。'

数据库包含一列“EXP”,其中包含表示人员开始日期的字符串...示例:“2015-01-11”(格式:yyyy-mm-dd)

我希望数据库查询返回一个变量“experience”,它是通过将当前日期与EXP列中包含的日期进行比较来计算的。

这是最近的尝试;我正在尝试的是什么:

SELECT phone, name, (DATEDIFF('CURDATE()','EXP') AS experience, bio, photo,  FROM squad

你能说出我想要完成的事吗?如果有人知道正确的代码放在这里,将不胜感激。

请注意,如果我只是替换代码

(DATEDIFF('CURDATE()','EXP') AS experience

使用'EXP',然后没有错误,一切都按预期工作。

5 个答案:

答案 0 :(得分:2)

你有额外的括号和' EXP'将使用字符串文字而不是数据库字段

    SELECT phone, name, DATEDIFF(now(), exp) AS experience, bio, photo
FROM squad

工作演示:http://sqlfiddle.com/#!9/79e87/2

答案 1 :(得分:0)

根据我从你的问题和select语句中的理解,我认为你的语法错误,请检查以下查询

SELECT phone, name, DATEDIFF(now(), exp) AS experience, bio, photo
FROM squad

答案 2 :(得分:0)

删除CURDATE()周围的引号,它是函数,因此不需要引号

SELECT phone, name, (DATEDIFF(CURDATE(), EXP) AS experience, bio, photo,  FROM squad

答案 3 :(得分:0)

尝试

SELECT phone, name, DATEDIFF(CURDATE(),EXP) AS experience, bio, photo,  FROM squad

答案 4 :(得分:0)

尝试此查询,

    SELECT 
            phone, name, 
            CONCAT( 
                    FLOOR(TIMESTAMPDIFF(MONTH,exp,CURDATE())/12),
                    ' Year(s), ', 
                    (TIMESTAMPDIFF(MONTH,exp,CURDATE())%12),
                    ' Month(s)'
                  ) AS experience,
            bio, photo  
    FROM 
            squad;