[英]mysql date format conversion, stored procedure or php?
我需要將DD Month, YYYY
日期轉換為將存儲在MySQL表中的YYYY-MM-DD
。 我正在用PHP函數執行此操作,但我想知道是否最好由db本身對其進行修改。 存儲過程,也許?
我會在PHP中處理它。 如果您始終將date
值始終以YYYY-MM-DD
格式傳遞給數據庫,則更為簡單。 我建議不要僅僅為了轉換字符串格式而浪費數據庫,無論這是到數據庫進行轉換的額外往返,還是轉換是在SQL中完成的。
有足夠的工作來使數據庫代碼正確。
如果您進行單獨的調用來進行轉換,那么這將是數據庫額外往返的開銷,而所有PHP代碼都將准備語句,綁定參數,執行並檢索結果集。
您的建議是添加存儲過程,這對數據庫沒有必要。 必須維護的另一個對象,可能在多個數據庫中。
如果您使用SQL進行轉換,則會增加額外的函數調用和復雜性...數據庫使用無效的日期值'Feb 30, 2014'
應該怎么做。 處理方式是否適合您的應用程序,以及該行為如何受到MySQL設置的影響。
我認為您最好在擁有更多控制權的PHP中處理轉換和驗證。
如此說來,就可以在MySQL中進行轉換。 最簡單的是使用STR_TO_DATE
函數。 您確實需要指定字符串的格式,並且該函數在無法確定預期日期時可以返回NULL,並且它返回“無效”日期值,例如
STR_TO_DATE('Frumiest 22, 2011','%M %d, %Y') = NULL
STR_TO_DATE('February 30, 2012','%M %d, %Y') = '2012-02-30'
如何處理“無效日期”值並將其存儲在DATE列中取決於MySQL的版本,是否啟用“嚴格”模式, ALLOW_INVALID_DATES
變量的設置等。
mysql_query("UPDATE `Table` SET `date` = STR_TO_DATE(`date`, '%d-%m-%Y')");
UPDATE `Table`
SET `date` = DATE_FORMAT(STR_TO_DATE(`date`, '%d %M, %Y'), '%Y-%m-%d')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.