簡體   English   中英

MySQL STR_TO_DATE()返回無效日期

[英]MySQL STR_TO_DATE() returns invalid date

我們的網站需要注冊。 最近很明顯,注冊過程在許多情況下都失敗了。 我在PHP代碼中實現了幾個日志,以開始對此進行跟蹤。 盡可能包括一個跟蹤mysql_last_error()的輸出。

我的下一步是編寫一個腳本,為不同的必填字段生成具有隨機值的注冊請求。 我的邏輯是,如果這產生了一個問題-問題出在后端邏輯上,如果沒有,問題出在服務器負載上。 (順便說一句,這聽起來合理嗎?)

當發送許多這樣的消息時(我會說大約150),我只有三個錯誤,並且mysql_last_error日志顯示如下:

  • [2014年5月21日,星期三13:20:45.000000]錯誤的日期值:第1行的'dob'列的日期為'1964-11-31'

  • [2014年5月21日,星期三13:48:37.000000]錯誤的日期值:第1行的'dob'列的日期為'1963-11-31'

  • [2014年5月21日,星期三13:48:37.000000]錯誤的日期值:第1行的'dob'列的日期為'1967-02-29'

該請求以JSON格式發送,其dob字段為mm / dd / yyyy格式。 我的PHP代碼中的SQL隨后如下所示:

"STR_TO_DATE('".$cleanUser['dob']."', '%m/%d/%Y')"

我也嘗試在MySQL Workbench中執行此操作,以將其與可能的錯誤代碼隔離。 但它在那里也失敗了。 我根本不明白問題出在哪里,為什么它只在某些日期發生。

感謝所有的幫助,在此先感謝

11月只有30天,因此日期1964-11-31不存在。

1967年不是雙性戀年,所以今年2月只有28天。

順便說一句,請使用參數化查詢而不是SQL串聯,以避免使查詢對SQL注入開放。

我認為錯誤來自數據格式。 %m表示月數。 一月,二月.etc等,請問您現在使用的是mm還是MM格式

您可以在php手冊頁http://www.php.net/manual/en/datetime.formats.date.php上查看更多詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM