在 MySQL 中处理时间( 三 )

ISO 8601 格式存储日期和时间值 。但是如果你想以另一种方式存储日期和时间值 , 例如 MM-DD-YYYY 格式 , 怎么办?首先 , 不要尝试这样做 。MySQL 以 8601 格式存储日期和时间 , 就是这样 。不要尝试更改它 。但是 , 这并不意味着你必须在将数据输入到数据库之前将数据转换为特定的格式 , 或者你不能以任何你想要的格式展示数据 。
如果你想要将非 ISO 的格式的日期输入到表中 , 你可以使用 STR_TO_DATE() 函数 。第一个参数是你想要存储在数据库中的日期的字符串值 。第二个参数是格式化字符串 , 它让 MySQL 知道日期的组织方式 。让我们看一个简单的例子 , 然后我将更深入地研究这个看起来很奇怪的格式化字符串是什么 。
mysql> insert into test (the_date) values (str_to_date('January 13, 2023','%M %d, %Y'));Query OK, 1 row affected (0.00 sec)你将格式化字符串放在引号中 , 并在每个特殊字符前加上百分号 。上面代码中的格式序列告诉 MySQL 我的日期由一个完整的月份名称 %M , 后跟一个两位数的日期%d , 然后是一个逗号 , 最后由一个四位数的年份 %Y 组成 。请注意 , 大写很重要 。
一些其他常用的格式化字符串字符是:

  • %b 缩写月份的名称(例如: Jan
  • %c 数字月份(例如: 1)
  • %W 星期名称(例如: `Saturday)
  • %a 星期名称的缩写(例如: Sat
  • %T 24 小时制的时间(例如: 22:01:22
  • %r 带 AM/PM 的 12 小时制的时间(例如: 10:01:22 PM
  • %y 两位数的年份(例如: 23)
请注意 , 对于两位数年份 %y , 年份范围是 1970 到 2069 。因此 , 从 70 到 99 的数字被假定为 20 世纪 , 而从 00 到 69 的数字被假定为 21 世纪 。
如果你有一个日期存储在你的数据库中 , 你想用不同的格式显示它 , 你可以使用这个 DATE_FORMAT() 函数:
mysql> SELECT DATE_FORMAT(the_date, '%W, %b. %d, %y') FROM test;+-----------------------------------------+| DATE_FORMAT(the_date, '%W, %b. %d, %y') |+-----------------------------------------+| Tuesday, Nov. 02, 21|| Wednesday, Jan. 05, 22|| Tuesday, May. 03, 22|| Friday, Jan. 13, 23|+-----------------------------------------+4 rows in set (0.00 sec)总结本教程应该为你提供了一个关于 MySQL 中的日期和时间值的有用的概述 。我希望本文教会了您一些新知识 , 使您能够更好地控制和理解 MySQL 数据库如何处理时间值 。


推荐阅读