mysql-STR_TO_DATE作为列,但未找到列

此查询有什么问题:

select *, STR_TO_DATE(start, '%d/%m/%Y') as date_format from dates where date_format >= 2018-03-19 

错误:

Column not found: 1054 Unknown column 'date_format' in 'where clause'
最佳答案
您不能在where子句中使用列别名. MySQL有一个扩展,您可以在Have子句中进行扩展(不进行任何聚合).因此,您可以执行以下操作:

select d.*, STR_TO_DATE(start, '%d/%m/%Y') as date_format
from dates d
having date_format >= '2018-03-19';

通常的建议是重复该表达式:

select d.*, STR_TO_DATE(start, '%d/%m/%Y') as date_format
from dates d
having STR_TO_DATE(start, '%d/%m/%Y') >= '2018-03-19';

但是,我强烈建议您更改表的结构.日期不应存储为字符串.您可以轻松解决此问题:

update dates
    set start = STR_TO_DATE(start, '%d/%m/%Y');

alter table dates modify column start date;

转载注明原文:mysql-STR_TO_DATE作为列,但未找到列 - 代码日志