MySQL查询中的DATEDIFF

时间:2011-08-08 21:46:52

标签: mysql datediff

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

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

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

取出DATEDIFF部分可以使查询顺利进行。

希望有人可以提供帮助。

感谢

1 个答案:

答案 0 :(得分:8)

您不能使用在同一查询的selectwhere部分中定义的别名 (但你可以进入group byhavingorder 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

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
相关问题