在where子句中使用函数的别名结果

时间:2016-05-11 20:51:23

标签: mysql

我想从日期与特定日期匹配的表中提取特定行。首先我将日期字符串转换为日期格式,这是查询:

SELECT id, str_to_date(candidate.AddDate,"%d/%m/%Y") n FROM candidate WHERE n='2016-01-01';

但我收到错误“WHERE子句中的未知列'n'

如何使查询在where子句中使用str_to_date的结果?

2 个答案:

答案 0 :(得分:2)

你不能在同一级别使用别名,因为当时没有创建

SELECT id, 
       Str_to_date(candidate.adddate, "%d/%m/%y") n 
FROM   candidate 
WHERE  Str_to_date(candidate.adddate, "%d/%m/%y") = '2016-01-01'; 

或创建子查询

SELECT *
FROM (
        SELECT id, 
               Str_to_date(candidate.adddate, "%d/%m/%y") n 
        FROM   candidate 
     ) T
WHERE  n = '2016-01-01'; 

答案 1 :(得分:0)

我不知道这是否是你想要实现的目标。

SELECT id, adddate from candidate C where C.adddate = "2016-01-01"

为什么不能拉出给定日期为2016-01-01的所有表格行。这是你想要的吗?或者是其他东西。如果您将日期存储为日期字段,则不需要执行str_to_time。

如果它存储为字符串,那么

SELECT * FROM ( SELECT id, DATE_FORMAT(STR_TO_DATE(candidate.adddate, '%d/%m/%Y') x FROM   candidate 
 ) C WHERE  x = '2016-01-01';