嗨,大家好,我只是试图从我的数据库中提取所有记录,其中rec_date(varchar)存储为m/d/Y并且已过期(如小于curdate()
),这个电话并没有给我我想要的东西:MySQL DATE_FORMAT与CURDATE()查询的比较
SELECT member_id,
status,
DATE_FORMAT(STR_TO_DATE(rec_date, '%m/%d/%Y'), '%Y-%m-%d') AS rec
FROM members
WHERE rec_date > CURDATE()
AND status = '1'
我明显做错了事,你能帮忙吗?
是的,这会做...我知道我非常想保存这下“日期“类型,但我不能控制这个不幸的事情,并且必须与我所给予的一致。我知道,糟糕,但嘿。 再次感谢。 – 2010-03-15 04:30:05
你为什么需要在子查询中?可怕的解决方案。为什么不按照我的建议在WHERE中使用STR_TO_DATE(m.rec_date,'%m /%d /%Y')? – zerkms 2010-03-15 05:17:20
这个子查询将比全查询的查询要糟糕得多。因为一旦子查询结果在内存中创建并且不适合 - 它将成为光盘上的临时表,写入并在之后进行查找,以用于外部查询。你可以用EXPLAIN来检查它;-) 实际上,你将得到相同的查询计划,但有一个步骤,这也将是fullscan。 – zerkms 2010-03-15 05:52:30