我想从日期与特定日期匹配的表中提取特定行。首先我将日期字符串转换为日期格式,这是查询:
SELECT id, str_to_date(candidate.AddDate,"%d/%m/%Y") n FROM candidate WHERE n='2016-01-01';
但我收到错误“WHERE子句中的未知列'n'
如何使查询在where子句中使用str_to_date的结果?
答案 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';