更改格式日期MySql

时间:2012-07-18 15:06:51

标签: mysql sql

我在MySql中有日期类型列。 默认情况下,MySql日期格式为YYYY / MM / DD。 但实际上我更喜欢使用DD / MM / YYYY格式。

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

4 个答案:

答案 0 :(得分: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默认的DATE格式以及处理代码中的格式更改会更好。

答案 1 :(得分: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 |
+-----------------+-------------------+

首先,它们是服务器端,它们不是动态的(它们不能在运行时设置)。但最糟糕的是,他们从未真正使用过。这些变量从未影响日期格式。它们目前已被弃用并排队等待删除。

总结:不,你不能。 日期格式已修复。

答案 2 :(得分:0)

尝试echo date('d/m/Y', strtotime($date));

这将占用您现有的日期,将其转换为UNIX时间并将其转换回具有所需格式的日期。

答案 3 :(得分: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用作列类型,因为它们具有自己的格式,并且会自动更新。

所以,这是您的替代时间戳或日期替代方案!希望这有所帮助,至少我很高兴我能让它发挥作用。