time_column TIME(2)
时区时区变化不仅在现实世界中产生混乱和疲劳 , 而且也会在数据库系统中制造麻烦 。地球被划分为 24 个独立的时区 , 通常每隔 15 度经度就会发生变化 。我说通常是因为一些国家行事方式不同 。例如中国只在一个时区运作 , 而不是预期的五个时区 。
你如何处理处于不同时区的数据库系统的用户就成了一个问题 。幸运的是 , MySQL 并没有使这个问题变得太困难 。
要检查你的会话时区 , 请运行:
mysql> select @@session.time_zone;
如果结果显示 System
, 这意味着它正在使用你的 my.cnf
配置文件中设置的时区 。如果你在本地计算机上运行你的 MySQL 服务器 , 这可能就是你会得到的 , 你不需要做任何改变 。
如果你想改变你的会话的时区 , 请运行如下命令:
mysql> set time_zone = '-05:00';
这将你的时区设置为 美国/东部US/Eastern , 比 协调世界时UTC
获得一周的日期为了跟上本教程后面部分的代码 , 你应该在你的系统中创建一个带有日期值类型的表 。比如:
mysql> create table test( row_id smallint not null auto_increment primary key,the_date date not null);
然后使用 ISO 8601 格式在表中插入一些随机日期 , 如
mysql> insert into test (the_date) VALUES ('2022-01-05');
我在我的 test
表中插入了四行日期值 , 你插入多少行都可以 。
有时你可能想知道某一天是星期几 。MySQL 给了你几种实现方法 。
第一种 , 也是最显而易见的方法 , 是使用 DAYNAME()
函数 。如下示例表所展示 , DAYNAME()
函数可以告诉你每个日期是星期几:
mysql> SELECT the_date, DAYNAME(the_date) FROM test;+------------+-------------------------------+| the_date| DAYNAME(the_date)|+------------+-------------------------------+| 2021-11-02 | Tuesday|| 2022-01-05 | Wednesday|| 2022-05-03 | Tuesday|| 2023-01-13 | Friday|+------------+-------------------------------+4 rows in set (0.00 sec)
另外两种获取星期几的方法是返回整数值 , 而不是星期几的名称 , 分别是 WEEKDAY()
和 DAYOFWEEK()
。他们都返回数字 , 却又各不相同 。WEEKDAY()
函数返回从 0 到 6 的数字 , 其中 0 代表星期一 , 6 代表星期日 。而 DAYOFWEEK()
则返回从 1 到 7 的数字 , 其中 1 代表星期日 , 7 代表星期六 。
mysql> SELECT the_date, DAYNAME(the_date),WEEKDAY(the_date), DAYOFWEEK(the_date) FROM test;+------------+------------------+------------------+--------------------+| the_date| DAYNAME(the_date)| WEEKDAY(the_date)| DAYOFWEEK(the_date)|| 2021-11-02 | Tuesday| 1| 3|| 2022-01-05 | Wednesday| 2| 4|| 2022-05-03 | Tuesday| 1| 3|| 2023-01-13 | Friday| 4| 6|+------------+------------------+------------------+--------------------+4 rows in set (0.00 sec)
当你只想获取日期的一部分时有时你可能在 MySQL 表中存储了一个日期 , 但是你只想获取日期的一部分 。这并不是问题 。
MySQL 中有几个顾名思义的函数 , 可以轻松获取日期对象的特定部分 。以下是一些示例:
mysql> SELECT the_date, YEAR(the_date), MONTHNAME(the_date), DAYOFMONTH(the_date) FROM test ;+-----------+---------------+-------------------+---------------------+| the_date| YEAR(the_date)|MONTHNAME(the_date)| DAYOFMONTH(the_date)|+-----------+---------------+-------------------+---------------------+| 2021-11-02| 2021| November| 2|| 2022-01-05| 2022| January| 5|| 2022-05-03| 2022| May| 3|| 2023-01-13| 2023| January| 13|+-----------+---------------+-------------------+---------------------+4 rows in set (0.00 sec)
MySQL 也允许你使用 EXTRACT()
函数来获取日期的一部分 。你提供给函数的参数是一个单位说明符(确保是单数形式)、FROM
和列名 。因此 , 为了从我们的 test 表中仅获取年份 , 你可以写:
mysql> SELECT EXTRACT(YEAR FROM the_date) FROM test;+----------------------------------------------+| EXTRACT(YEAR FROM the_date)|+----------------------------------------------+| 2021|| 2022|| 2022|| 2023|+----------------------------------------------+4 rows in set (0.01 sec)
插入和读取不同格式的日期正如之前提到的 , MySQL 使用
推荐阅读
- 取代C++!微软正在改用Rust语言重写Win11内核
- Spring/SpringBoot中的声明式事务和编程式事务源码、区别、优缺点、适用场景、实战
- 软件架构设计之构件与中间件技术
- 从Java源码来看Native命令执行方法
- 使用 Linux 命令从图像中删除背景
- 如何处理生产环境中的数据和机器学习偏误?
- 黄晓明|《外星人在娱乐圈》段影帝的外星女友攻略路
- 支付宝可以在“出行付款码前”进行密码验证吗?
- 毕滢|洪欣和张丹峰被曝没离婚,毕滢从中劝和,曝光和洪欣电话聊天内容
- 女人在月经期间,欲望真的很强吗?