查找员工';MySQL的体验差异

查找员工';MySQL的体验差异,mysql,Mysql,问题是找出史密斯和艾伦的经验差异。 所以我写了这个查询 SELECT DATEDIFF( SELECT hiredate FROM emp WHERE ename LIKE 'SMITH', SELECT hiredate FROM emp WHERE ename LIKE 'ALLEN' ) FROM emp; 它显示了错误。。 这个查询有什么问题。 Plz帮助….子查询需要用括号括起来: SELECT DATEDIFF(

问题是找出史密斯和艾伦的经验差异。 所以我写了这个查询

SELECT DATEDIFF(
    SELECT hiredate FROM emp 
           WHERE ename LIKE 'SMITH', 
    SELECT hiredate FROM emp 
           WHERE ename LIKE 'ALLEN'
) FROM emp;
它显示了错误。。 这个查询有什么问题。
Plz帮助….

子查询需要用括号括起来:

SELECT DATEDIFF(
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'SMITH'), 
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'ALLEN')
) FROM emp;
实际上,您不需要emp中的最终
,除非您需要很多行:

SELECT DATEDIFF(
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'SMITH'), 
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'ALLEN')
);
编写此查询的另一种方法:

select datediff(max(case when ename like 'SMITH' then hiredate end),
                max(case when ename like 'ALLEN' then hiredate end)
               )
from emp
where ename in ('SMITH', 'ALLEN');
此查询的优点是只读取
emp
表一次

编辑:(约个月)


MySQL没有内置的能力来计算两个值之间的月数。近似值为
天/30.4
。您可以使用
period\u diff()
。但如果这很重要,那么再问另一个问题,并举例说明你所说的月差是什么意思(“2014-01-31”和“2014-02-01”之间有什么区别?“2014-01-12”和“2014-02-11”之间有什么区别?“2014-01-01”和“2014-01-31”之间有什么区别?)。

子查询需要用括号括起来:

SELECT DATEDIFF(
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'SMITH'), 
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'ALLEN')
) FROM emp;
实际上,您不需要emp中的最终
,除非您需要很多行:

SELECT DATEDIFF(
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'SMITH'), 
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'ALLEN')
);
编写此查询的另一种方法:

select datediff(max(case when ename like 'SMITH' then hiredate end),
                max(case when ename like 'ALLEN' then hiredate end)
               )
from emp
where ename in ('SMITH', 'ALLEN');
此查询的优点是只读取
emp
表一次

编辑:(约个月)


MySQL没有内置的能力来计算两个值之间的月数。近似值为
天/30.4
。您可以使用
period\u diff()
。但如果这很重要,那么再问另一个问题,并举例说明你所说的月差是什么意思(“2014-01-31”和“2014-02-01”之间有什么区别?“2014-01-12”和“2014-02-11”之间有什么区别?“2014-01-01”和“2014-01-31”之间有什么区别?)。

子查询需要用括号括起来:

SELECT DATEDIFF(
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'SMITH'), 
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'ALLEN')
) FROM emp;
实际上,您不需要emp中的最终
,除非您需要很多行:

SELECT DATEDIFF(
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'SMITH'), 
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'ALLEN')
);
编写此查询的另一种方法:

select datediff(max(case when ename like 'SMITH' then hiredate end),
                max(case when ename like 'ALLEN' then hiredate end)
               )
from emp
where ename in ('SMITH', 'ALLEN');
此查询的优点是只读取
emp
表一次

编辑:(约个月)


MySQL没有内置的能力来计算两个值之间的月数。近似值为
天/30.4
。您可以使用
period\u diff()
。但如果这很重要,那么再问另一个问题,并举例说明你所说的月差是什么意思(“2014-01-31”和“2014-02-01”之间有什么区别?“2014-01-12”和“2014-02-11”之间有什么区别?“2014-01-01”和“2014-01-31”之间有什么区别?)。

子查询需要用括号括起来:

SELECT DATEDIFF(
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'SMITH'), 
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'ALLEN')
) FROM emp;
实际上,您不需要emp中的最终
,除非您需要很多行:

SELECT DATEDIFF(
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'SMITH'), 
    (SELECT hiredate FROM emp 
           WHERE ename LIKE 'ALLEN')
);
编写此查询的另一种方法:

select datediff(max(case when ename like 'SMITH' then hiredate end),
                max(case when ename like 'ALLEN' then hiredate end)
               )
from emp
where ename in ('SMITH', 'ALLEN');
此查询的优点是只读取
emp
表一次

编辑:(约个月)


MySQL没有内置的能力来计算两个值之间的月数。近似值为
天/30.4
。您可以使用
period\u diff()
。但如果这很重要,那么再问另一个问题,并举例说明你所说的月差(2014-01-31和2014-02-01之间的差异是什么?'2014-01-12和'2014-02-11'之间的差异是什么?'2014-01-01'和'2014-01-31'之间的差异是什么?)。

你能用下面的查询来获得月差天数吗:

SELECT ceil(DATEDIFF(
    (SELECT hiredate FROM emp WHERE ename LIKE 'SMITH'),(SELECT hiredate FROM emp WHERE ename LIKE 'ALLEN')
)/30.4);

您能否使用以下查询以月为单位获取日差:

SELECT ceil(DATEDIFF(
    (SELECT hiredate FROM emp WHERE ename LIKE 'SMITH'),(SELECT hiredate FROM emp WHERE ename LIKE 'ALLEN')
)/30.4);

您能否使用以下查询以月为单位获取日差:

SELECT ceil(DATEDIFF(
    (SELECT hiredate FROM emp WHERE ename LIKE 'SMITH'),(SELECT hiredate FROM emp WHERE ename LIKE 'ALLEN')
)/30.4);

您能否使用以下查询以月为单位获取日差:

SELECT ceil(DATEDIFF(
    (SELECT hiredate FROM emp WHERE ename LIKE 'SMITH'),(SELECT hiredate FROM emp WHERE ename LIKE 'ALLEN')
)/30.4);

谢谢我真的很喜欢最后一个问题。这很有帮助:)最后一个应该有一个
,它曾经有一个
-
。如果我想用月而不是天来计算差异呢?@SriVastav:我已经添加了我的答案,只是做了一些小的修改。谢谢。。。我真的很喜欢最后一个问题。这很有帮助:)最后一个应该有一个
,它曾经有一个
-
。如果我想用月而不是天来计算差异呢?@SriVastav:我已经添加了我的答案,只是做了一些小的修改。谢谢。。。我真的很喜欢最后一个问题。这很有帮助:)最后一个应该有一个
,它曾经有一个
-
。如果我想用月而不是天来计算差异呢?@SriVastav:我已经添加了我的答案,只是做了一些小的修改。谢谢。。。我真的很喜欢最后一个问题。这很有帮助:)最后一个应该有一个
它曾经有一个
-
。如果我希望以月为单位而不是以天为单位,那该怎么办?@SriVastav:我已经添加了我的答案,但做了一些小修改。我希望以月为单位而不是以天为单位……我能做什么?我希望以月为单位而不是以天为单位……我能做什么?我想做什么以月为单位而不是以天为单位……我能做什么?