嗨,我只是想拉从我的数据库谁拥有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'

我明明做错事,所以你能帮忙吗?

有帮助吗?

解决方案

我同意适当的数据类型应该尽可能使用zerkms。否则,您必须使用子查询字符串/ VARCHAR转换成日期/时间数据类型第一:

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()

其他提示

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

反正 - 你可以使用DATE_FORMAT格式rec_date串就在WHERE子句和比较它CURDATE()

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top