过滤有效的日期


Filtering valid date -mysql

我正在导入具有2个字段的csv文件,即sales,date。Csv文件如下

100,2014-07-01
100,2014-07-03
100,2014-07-04
100,garbaze date

我已经迁移到mysql如下

id   date_input
100   2014-07-01
100   2014-07-3
100   2014-07-04
100   garbaze date

不幸的是,date_input是varchar,现在我需要删除垃圾值,只显示实际日期

id   date_input
100   2014-07-01
100   2014-07-3
100   2014-07-04

I TRIED

SELECT * FROM TABLE WHERE date_input  LIKE '20%'

但有时garbaze可以是20-date-garbaze什么好主意吗?

我不能使date_input的数据类型日期,因为我正在做loaddata导入记录从csv到mysql。一个数据类型不匹配将停止所有其他导入

将日期转换为unix时间戳并检查

SELECT * FROM table WHERE unix_timestamp(date_input) >0

注意:unix_timestamp将返回0(零)对于非日期值

将字符串转换为日期的函数称为STR_TO_DATE(),它为非法日期返回NULL,因此这基本上就是您所需要的。您还可以使用它将字符串复制到实际的日期列中。