我有一个将日期存储为text
的列,我需要选择日期少于今天的所有条目。
如果我使用它:
SELECT *
FROM mytab
WHERE expire < CURRENT_DATE( )
ORDER BY expire DESC
它不会选择正确的条目,只会选择da_expire
为空的条目。
我该如何解决?
答案 0 :(得分:1)
首先,为什么要将它存储为字符串?
您需要使用MySQL的内置函数将其转换为日期,以便您可以将其与今天的日期进行比较。
WHERE STR_TO_DATE(expire, '%Y/%m/%d %H:%i') < CURDATE()
这会慢一点,因为如果在列上定义了一个索引,它就不会使用任何索引。
答案 1 :(得分:0)
在查询中使用STR_TO_DATE(过期,'%m /%d /%Y')而不是过期。我假设您以月份日年格式存储日期。您需要根据字符串格式调整格式。但是,出于性能原因,在加载/插入过程中转换过期类型。