Mysql STR_TO_DATE为列,但未找到列
此查询中有什么错误:Mysql STR_TO_DATE为列,但未找到列,mysql,sql,Mysql,Sql,此查询中有什么错误: 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' 不能使用日期格式,因为它只是给定的名称,但STR\u TO\u date(start,'%d/%m/%Y')不能在whe
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'
不能使用日期格式,因为它只是给定的名称,但
STR\u TO\u date(start,'%d/%m/%Y')
不能在where
子句中使用列别名。MySQL有一个扩展,您可以在having
子句中进行扩展(无需进行任何聚合)。因此,您可以:
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;
这样试试
date\u格式
不是字段,因此使用start
而不是date\u格式
select *, STR_TO_DATE(start, '%d/%m/%Y') as date_format from dates where start >= 2018-03-19
其他解决方案的可能副本是视图。