读取存储为文本的数据并在IF语句中使用

时间:2013-09-26 18:16:11

标签: mysql

我有一个将日期存储为text的列,我需要选择日期少于今天的所有条目。

如果我使用它:

SELECT * 
FROM mytab
WHERE expire < CURRENT_DATE( ) 
ORDER BY expire DESC 

它不会选择正确的条目,只会选择da_expire为空的条目。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

首先,为什么要将它存储为字符串?

您需要使用MySQL的内置函数将其转换为日期,以便您可以将其与今天的日期进行比较。

WHERE STR_TO_DATE(expire, '%Y/%m/%d %H:%i') < CURDATE()

这会慢一点,因为如果在列上定义了一个索引,它就不会使用任何索引。

答案 1 :(得分:0)

在查询中使用STR_TO_DATE(过期,'%m /%d /%Y')而不是过期。我假设您以月份日年格式存储日期。您需要根据字符串格式调整格式。但是,出于性能原因,在加载/插入过程中转换过期类型。