我问了一个类似的问题,但我被建议分开询问。
我正在使用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年之前过滤掉电影,我只是不确定如何用我所拥有的不幸碎片数据来实现这一目标。
谢谢!
答案 0 :(得分:0)
如果您不需要日期不完整的记录,则可以使用正则表达式仅返回具有完整日期的记录。 http://dev.mysql.com/doc/refman/5.7/en/regexp.html
或者您可以使用案例陈述和 考虑日期的不同变化。