1

我的日期字段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声明中出错的地方..

4

1 回答 1

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";
于 2012-05-07T13:22:08.470 回答