MySQL是否提供驗證日期有效性的函數?例如,在提供無效日期2013-02-30時,DATE
函數返回NULL
。但是,我也同時使用STR_TO_DATE
,這會神祕地阻止DATE
正常工作。MySQL日期有效性
SELECT DATE('2013-02-30'); NULL
SELECT STR_TO_DATE('2013-02-30', '%Y-%m-%d'); NOT NULL
SELECT DATE('2013-02-40'); NULL
SELECT STR_TO_DATE('2013-02-40', '%Y-%m-%d'); NULL
SELECT DATE(STR_TO_DATE('2013-02-30', '%Y-%m-%d')); NOT NULL
爲什麼STR_TO_DATE
停止DATE
的功能,並且有一些變通方法,以驗證是否使用日期STR_TO_DATE
(這我有義務用)時是有效的?
我曾在其間的答案跌跌撞撞:顯然DATE
功能跳過一些驗證檢查,當數據類型已經是「日期」(STR_TO_DATE
將字符串轉換爲日期數據類型)的。因此,在將日期解析爲與STR_TO_DATE
正確的格式之後將日期轉換爲字符串,是否有訣竅:
@valid_date = NOT ISNULL(DATE(CONVERT(STR_TO_DATE('2013-02-29', '%Y-%m-%d'), CHAR)))
。
中的格式
a priori
請提供更多的上下文:您嘗試驗證的數據流是什麼? – wallyk@wallyk可以任意格式化的日期應該首先傳遞給STR_TO_DATE函數及其格式,並且應該有效驗證其有效性。剛剛解決了問題,請參閱編輯。 – user2180613
如果您從某個數據庫字段中提取日期,則您已經知道它是NULL或有效。你爲什麼要驗證它? – wallyk