我问过类似的问题,但建议我单独问这个问题。
我正在使用 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 年之前的电影,我只是不知道如何用我所拥有的不幸的碎片数据来实现这一点。
谢谢!
最佳答案
如果您不需要日期不完整的记录,则可以使用正则表达式仅返回具有完整日期的记录。 http://dev.mysql.com/doc/refman/5.7/en/regexp.html
或者你可以使用 case 语句并且 考虑日期的不同变化。
关于MySQL IMDB 过滤发布日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847732/