使用函数后是否可以在 SQL 中查询字段名称?
所以例如
select datediff(hh, startdate, enddate) as HoursBetween
from tbl
where HoursBetween > 0
使用函数后是否可以在 SQL 中查询字段名称?
所以例如
select datediff(hh, startdate, enddate) as HoursBetween
from tbl
where HoursBetween > 0
不幸的是,您不能使用ALIAS
与子句在同一级别上创建的那个,WHERE
因为WHERE
子句在子句之前首先执行SELECT
。你有两个选择,
一、直接在WHERE
子句中使用表达式。
select datediff(hh, startdate, enddate) as HoursBetween
from tbl
where datediff(hh, startdate, enddate) > 0
二,将语句包装在子查询中。
SELECT *
FROM
(
select datediff(hh, startdate, enddate) as HoursBetween
from tbl
) ss
WHERE ss.HoursBetween > 0
这是SQL Order of Operation
:
SELECT *
FROM (select datediff(hh, startdate, enddate) as HoursBetween
from tbl) AS I
WHERE HoursBetween > 0
在这种情况下可以使用On MySQL HAVING子句:
SELECT datediff(hh, startdate, enddate) AS HoursBetween FROM tbl
HAVING HoursBetween > 0