有没有办法改变日期格式?
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() 函数。
【讨论】:
以上是关于有没有办法改变日期格式?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将当前日期与以 VARCHAR 格式存储在数据库中的日期进行比较?