MySQL IMDB过滤发布日期

时间:2016-06-16 00:02:30

标签: mysql filtering imdb

我问了一个类似的问题,但我被建议分开询问。

我正在使用IMDB数据库,release_dates表的设置如下:

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| movie_id     | int(11)      | YES  |     | NULL    |       |
| release_date | varchar(255) | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+
2 rows in set (0.06 sec)

movie_id    release_date
    2     USA:22 January 2006
    3     USA:12 February 2006
    4     USA:19 February 2006
    5     USA:22 January 2006
    6     USA:19 March 2006

但是,有些记录只包含部分日期:

movie_id    release_date
    86     USA:June 2005
    90     USA:2003

哪个不起作用:

SELECT str_to_date(substring_index(release_date, ':', -1), '%d %M %Y') FROM release_dates;

因为它导致只有年或月/年的记录出现NULL。

我理想的结果是能够从1984年之前过滤掉电影,我只是不确定如何用我所拥有的不幸碎片数据来实现这一目标。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您不需要日期不完整的记录,则可以使用正则表达式仅返回具有完整日期的记录。 http://dev.mysql.com/doc/refman/5.7/en/regexp.html

或者您可以使用案例陈述和 考虑日期的不同变化。

https://www.1keydata.com/sql/sql-case.html