2013-02-03 38 views
1

我正在用Perl编写一个应用程序来处理来自MySQL数据库的数据。我只需要选择具有有效的ISO格式日期YYYY-MM-DD的记录。然而,很多记录没有一个月或一天的价值,所以它们就像这个1999-00-00。我需要过滤掉这些。从SQL查询中删除不完整的ISO日期?

我可以用Perl做到这一点,但我认为最好的方法是在SQL语句中使用REGEXP函数;但我不确定这是否是最好的方法;我也不知道如何修正数据。

感谢您的任何建议!

+0

一旦你这样做,想想存储日期为日期,而不是字符串。 –

+0

@DanBracuk:mysql允许在其日期字段中存储部分日期,其中任何部分可以为0.这偶尔是方便的,并且通常不是。 – ysth

回答

2

你总是可以只使用:

where DATE_COL not like '%-00-00' 
+0

或'where year(DATE_COL)and month(DATE_COL)and dayofmonth(DATE_COL)' – ysth