有没有办法改变日期格式?

Posted

技术标签:

【中文标题】有没有办法改变日期格式?【英文标题】:Is there a way to change DATE format on? 【发布时间】:2012-10-01 09:37:00 【问题描述】:

我需要在我的 SQL 数据库中存储一些日期,问题是默认存储是

YYYY-MM-DD

我需要

DD-MM-YYYY

我唯一的解决方案是将日期存储为 Varchars (10),它运行良好,但现在我无法按 DATE 对查询进行排序,我需要将它们从最旧到最新排序...

【问题讨论】:

为什么不存储在时间戳中,然后进行相应的更改???你可以在w3schools.com/sql/func_date_format.asp查看列表 您出于显示目的所需的内容不应改变您存储数据的方式。如果是日期时间数据,请将其存储在适当的日期时间类型中。数据库知道如何适当地对日期时间值进行排序。然后,当您想向某人显示值时,请在 there 进行格式化。数据库日期时间错误的最大来源是人们尝试使用字符串来表示它们。 赞成@swapnesh,但想澄清一下。看,你没有在 mysql 中存储日期:你存储 facts。并且当您希望将该时间点存储为“YYYY-MM-DD”或“DD-MM-YYYY”甚至“MM-DD-”时,某个事件发生在特定时间点的事实不会改变YYYY',上帝保佑发明这种格式的人。这是应该如何表示这个事实的所有细节,100 次中有 99 次你不应该在你的数据库中存储与表示相关的细节(不是事实!)。 显示部分可以,但是我的用户不会输入 YYYY-MM-DD,那么我如何存储 DD-MM-YYYY 日期,将其转换为 YYYY-MM -DD 格式? 是的。在输入时,尽早转换为日期时间值(而不是字符串)。在输出时,尽可能晚地将日期时间转换为字符串。通常最好使用您用于编写 UI 的任何应用程序语言来完成这两件事。 【参考方案1】:

使用原生的DATE_FORMAT(date,format) 函数。

SELECT DATE_FORMAT(date_column, '%d-%e-%Y') FROM your_table;

【讨论】:

【参考方案2】:

无法更改 MySQL 日期或其任一变体(DATETIME、TIMESTAMP 和 DATE)的默认日期格式。

引用手册:

虽然 MySQL 尝试以多种格式解释值,但始终必须给出日期
 按年-月-日顺序(例如,'98-09-04'),而不是按月-日-年或
其他地方常用的日-月-年顺序
(例如,“09-04-98”、“04-09-98”)。

考虑 @Micheal 在他的帖子中正确建议的原生 DATE_FORMAT() 函数。

【讨论】:

以上是关于有没有办法改变日期格式?的主要内容,如果未能解决你的问题,请参考以下文章

更改 vuetify 数据表中的日期格式

有没有办法将当前日期与以 VARCHAR 格式存储在数据库中的日期进行比较?

有没有办法在 SQL Server 中将日期格式化为 MM DD YYYY 而不是 YYYYMMDD? [复制]

date-fns - 有没有办法获取短日期格式字符串

有没有办法为 IE 填充“dd-MON-yyyy”日期格式

如何在EXCEL中改变日期格式