簡體   English   中英

MySQL日期格式轉換,存儲過程或PHP?

[英]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.

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