Mysql查询有助于显示小于给定日期的结果

时间:2012-05-07 13:09:38

标签: mysql

我在Mysql中的日期字段存储为char如下050712 ..现在我想显示数据库中可用的结果少于这个日期。我写如下

条件应该失败

select * from tblFedACHRDFI where date_format(changedate,'%m/%d/%Y')> 05/08/12;

这显示所有可用的记录,但我不需要我只想在日期为05/06/12时显示,这意味着

真实条件

select * from tblFedACHRDFI where date_format(changedate,'%m/%d/%Y')> 05/06/12;

当我按如下方式编写Sqlserver时,同样适用于我

根据我的要求显示未显示的记录

select * from tblFedACHRDFI where
 CONVERT(datetime,(SUBSTRING(ChangeDate,1,2)+'/'
+SUBSTRING(ChangeDate,3,2)+'/'+dbo.Years
(SUBSTRING(ChangeDate,5,2))+SUBSTRING(ChangeDate,5,2)))>
 '05/08/2012'

任何人都可以帮助我在MySql陈述中出错的地方。

1 个答案:

答案 0 :(得分:3)

MySQL日期应为YYYY-MM-DD,列类型应为DATE。

如果您希望以任何其他方式存储日期(例如,像此处一样使用CHAR(6)),则每次使用日期时都必须使用转换。这种情况较慢,使用的CPU较多,并且可能会失败,因为您可以在CHAR字段中存储无效值。

然而,确实有效。使用STR_TO_DATE功能将CHAR列转换为正确的日期。现在你可以将它与正确的日期进行比较,使用INTERVAL函数,整个shebang:

select * 
from tblFedACHRDFI 
where str_to_date(changedate,'%m%d%Y') > "2012-08-05";