2012-07-18 151 views
5

我在MySql中有日期類型列。默認情況下爲 MySql日期格式爲YYYY/MM/DD。 但實際上我更喜歡使用DD/MM/YYYY格式。更改格式日期MySql

我可以更改列日期格式嗎?

回答

0

嘗試echo date('d/m/Y', strtotime($date));

這將帶您現有的日期,將其轉換爲UNIX時間和您所需的格式轉換回一個日期。

+0

問題是詢問MySQL的日期格式。 – Kermit 2012-07-18 15:55:23

2

不,您不能更改DATE,DATETIME或TIMESTAMP列的默認MySQL格式。

但是,您可以在SQL語句中使用MySQL函數以不同格式輸出DATE表達式作爲字符串。

DATE_FORMAT(datecol , '%m/%d/%Y') AS datecol 

(這將在SELECT列表做工精細,但避免任何謂詞使用這個(即WHERE子句)。在那裏,你將要引用的裸柱,和轉換您的首選格式「的字符串MM/DD/YYYY」使用STR_TO_DATE功能,如

datecol >= STR_TO_DATE('07/16/2012','%m/%d/%Y') 

雖這麼說,我覺得你真的會使用MySQL的默認日期格式與數據庫的交互得到更好的服務,並處理格式你的代碼有變化。

1

其他DBMS具有可以更改的默認格式,即使在會話基礎上也是如此。例如,在Oracle中,您可以簡單地更改NLS_DATE_FORMAT會話變量,Oracle將使用您的自定義格式輸入和輸出。 MySQL不。

是有一對夫婦的server variablesdate_formatdatetime_format),您可以動心考慮適合於這個目的:

mysql> SHOW VARIABLES LIKE 'date%_format'; 
+-----------------+-------------------+ 
| Variable_name | Value    | 
+-----------------+-------------------+ 
| date_format  | %Y-%m-%d   | 
| datetime_format | %Y-%m-%d %H:%i:%s | 
+-----------------+-------------------+ 

首先,它們是服務器端,他們是不是動態(它們不能在運行時設置)。但更糟的是,他們從來沒有實際使用過。這些變量從未影響日期格式。目前它們已被棄用並排隊刪除。

總結:不,你不能。 日期格式已修復。

0

正如其他人已經解釋說,這是不可能的,但這是另一種解決方案,它需要一點調整,但它的工作方式像日期列。

我開始思考,我怎樣才能使格式化成爲可能。我有一個想法。如何爲它啓動觸發器?我的意思是,添加類型爲char的列,然後使用MySQL觸發器更新該列。這工作!我做了相關的觸發一些研究,最後拿出這些查詢:

CREATE TRIGGER timestampper BEFORE INSERT ON table 
FOR EACH 
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d/%m/%Y'); 
CREATE TRIGGER timestampper2 BEFORE UPDATE ON table 
FOR EACH 
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d/%m/%Y'); 

不能使用TIMESTAMPDATE作爲列類型,因爲這些都有自己的格式,和他們自動更新。

所以,這是您的替代時間戳或日期替代!希望這會有所幫助,至少我很高興我能做到這一點。