MySQL DATE_FORMAT与CURDATE()查询的比较

时间:2010-03-15 03:55:01

标签: sql mysql date-format

嘿伙计们,我只是试图从我的数据库中提取所有记录,其中rec_date(varchar)存储为m / d / Y并且已过期(如,小于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'

我显然做错了什么,你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

正确的方法 - 将数据存储在适当的字段类型中。使用“日期”类型而不是“varchar”。

无论如何 - 您可以使用DATE_FORMAT在WHERE子句中将rec_date格式化为字符串,并将其与CURDATE()进行比较。

答案 1 :(得分:0)

我同意zerkms应尽可能使用适当的数据类型。否则,您必须首先使用子查询将字符串/ varchar转换为DATE / TIME数据类型:

SELECT x.member_id,
       x.status,
       DATE_FORMAT(x.rec_dt, '%Y-%m-%d')
  FROM (SELECT m.member_id,
               m.status,
               STR_TO_DATE(m.rec_date, '%m/%d/%Y') AS rec_dt
          FROM MEMBERS m
         WHERE m.status = '1') x
 WHERE x.rec_dt < CURDATE()
相关问题