我想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一部分出来,使流畅运行查询.
希望有人能提供帮助.
谢谢
不能使用别名,你已经在同一个查询中的定义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
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)
| 归档时间: |
|
| 查看次数: |
13955 次 |
| 最近记录: |