MySQL查询中的DATEDIFF

dje*_*tee 2 mysql datediff

我想DATEDIFF在MySQL查询中使用这样的函数:

SELECT `ItemType`, 
       `DateOpen` AS StartDate, 
       IFNULL (`DateClosed`, CURDATE()) AS EndDate, 
       DATEDIFF(`EndDate`, `StartDate`) AS ItemLife
FROM `Items` 
WHERE `ProjectID`=11
ORDER BY `ItemType` ASC
Run Code Online (Sandbox Code Playgroud)

由于该DATEDIFF部分,上述查询失败.我尝试使用和不使用后退标记的列名称没有区别.我的语法错了还是我违反了一些SQL语言规则?

DATEDIFF一部分出来,使流畅运行查询.

希望有人能提供帮助.

谢谢

Imr*_*e L 8

不能使用别名,你已经在同一个查询中的定义selectwhere部分(但你可以在group by,having,order by和子查询中定义的别名)

SELECT `ItemType`, 
       `DateOpen` AS StartDate, 
       IFNULL (`DateClosed`, CURDATE()) AS EndDate, 
       DATEDIFF(IFNULL (`DateClosed`, CURDATE()), `DateOpen`) AS ItemLife
FROM `Items` 
WHERE `ProjectID`=11
ORDER BY `ItemType` ASC
Run Code Online (Sandbox Code Playgroud)

要么

SELECT t.*,
       DATEDIFF(`EndDate`, `StartDate`) AS ItemLife
FROM (
    SELECT `ItemType`, 
           `DateOpen` AS StartDate, 
           IFNULL (`DateClosed`, CURDATE()) AS EndDate
    FROM `Items` 
    WHERE `ProjectID`=11
    ORDER BY `ItemType` ASC
) t
Run Code Online (Sandbox Code Playgroud)