2012-04-12 81 views
0

我試圖轉換正在導入到我的數據庫的表(csv)中的列中的varchar值。現在我沒有任何關於日期可能在csv文件中的格式的任何信息。我需要檢查列中的所有值,如果有效,將這些列轉換爲mysql的DATE數據類型。問題是如果我使用str_to_date並且日期格式不同,那麼存儲過程拋出錯誤並停止執行。我需要一種方法來忽略該錯誤,以便存儲過程可以完成其迭代。使用str_to_date將varchar轉換爲日期

另外我打算使用結果值來驗證內容是否是有效日期?有沒有更好的方法來做到這一點?請記住,我沒有關於原始數據可能具有的日期格式的信息。

例如日期可能是'11 -Apr-2011','20110102','01-05-2011'等。 我需要支持一些4-5格式。 謝謝。

+0

01-05-2011:是5月1日還是1月5日? – Spudley 2012-04-12 19:54:08

+0

這將是5月初,我不會考慮mm-dd-yyyy格式。但基本上我需要hack來避免mysql存儲過程在遇到「錯誤的日期時間值」錯誤時停止。我自己處理errors/null結果,我只需要mysql來完成它的迭代。 – AsG 2012-04-12 20:06:56

回答

0

既然你不知道的日期格式事先,你可以處理所有使用preg_match,如:

$regex = '<matches for dates>'; 
if (preg_match($regex, $stringToCheck)) { 
    str_to_date($stringToCheck); 
} else { 
} 

我不知道你會如何處理未知的情況下,而無需創建多個案例他們。 PHP如何知道格式是mm/dd/yy與dd/mm/yy?

+0

嗨,感謝您的快速回復。其實我在我的應用程序中使用Java與Java。不幸的是PHP不涉及:(。有什麼替代preg_match在mysql? – AsG 2012-04-12 19:54:09

+0

愚蠢的堆棧,我有PHP過濾器:(你可以使用「LIKE」具有模式匹配功能,但你必須指定每個特定的日期模式。http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html – citizenen 2012-04-12 19:57:46

+0

好的,我會試試。順便說一句,你認爲在mysql中的REGEXP會有幫助嗎? – AsG 2012-04-12 20:07:59

相關問題