0

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

如果我使用这个:

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

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

我该如何解决?

4

2 回答 2

1

首先,您为什么将其存储为字符串?

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

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

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

于 2013-09-26T18:20:40.083 回答
0

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

于 2013-09-26T18:20:05.757 回答