【问题标题】:Filtering valid date -mysql过滤有效日期 -mysql
【发布时间】:2014-07-22 15:55:41
【问题描述】:

我正在导入具有 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

我试过了

SELECT * FROM TABLE WHERE date_input  LIKE '20%'

但有时 garbaze 可能是 20-date-garbaze 有什么想法吗?

我无法将 date_input 的数据类型设为日期,因为我正在使用 loaddata 将记录从 csv 导入 mysql。一种数据类型不匹配将停止所有其他导入

【问题讨论】:

  • 如果您将日期存储为日期而不是字符串,这将很容易

标签: php mysql sql csv


【解决方案1】:

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

SELECT * FROM table WHERE unix_timestamp(date_input) >0

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 2016-10-17
      • 2015-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多