我想在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
部分可以使查询顺利进行。
感谢
答案 0 :(得分:8)
您不能使用在同一查询的select
和where
部分中定义的别名
(但你可以进入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
或
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