MySQL学习记录--操作时间数据

Posted 旅途

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL学习记录--操作时间数据相关的知识,希望对你有一定的参考价值。

1、返回日期的时间函数

  date_add() : 可以为指定日期增加/减少任意一段时间间隔。下面举例将当前日期增加一个月和减少一个月

mysql> select date_add(current_date(), interval 1 month) as add_one_month;
+---------------+
| add_one_month |
+---------------+
| 2016-12-30    |
+---------------+
1 row in set (0.00 sec)

mysql> select date_add(current_date(), interval -1 month) as reduce_one_month;
+------------------+
| reduce_one_month |
+------------------+
| 2016-10-30       |
+------------------+
1 row in set (0.00 sec)

  格式:date_add(‘要修改的时间‘,interval 数量 时间间隔类型), 下面展示一些常见的时间间隔类型

间隔名称 描述
Second 秒数
Minute 分钟数
Hour 小时数
Day 天数
Month 月份
Year 年份
Minute_second 分钟和秒,以":"分隔
Hour_second 小时、分钟和秒,以":"分隔
Year_month 年份和月份,以"-"分隔

   下面对时间间隔后三种举例:

  ①、将当前时间增加3小时20分钟

mysql> select current_timestamp;  -- 当前时间
+---------------------+
| current_timestamp   |
+---------------------+
| 2016-11-30 15:22:46 |
+---------------------+
1 row in set (0.00 sec)

mysql> select date_add(current_timestamp, interval 3:20:00 Hour_second) as add_HourSecond;
+---------------------+
| add_HourSecond      |
+---------------------+
| 2016-11-30 18:42:49 |
+---------------------+
1 row in set (0.00 sec)

  ②、将日期‘2000-01-01‘增加16年10个月

mysql> select date_add(2000-01-01, interval 16-10 Year_month) as add_Year_month;
+----------------+
| add_Year_month |
+----------------+
| 2016-11-01     |
+----------------+
1 row in set (0.00 sec)

  

函数last_day() : 返回所求月份的最后一天

  举例:求"2016-01-01"该月的最后一天

mysql> select last_day(2016-01-01);
+------------------------+
| last_day(2016-01-01) |
+------------------------+
| 2016-01-31             |
+------------------------+
1 row in set (0.00 sec)

 无论提供的参数是date型还是datetime型,last_day()函数都将返回一个date值

 

2、返回字符串的时间函数

  dayname() : 返回所求的日期是星期几

  举例:求当前日期是星期几

mysql> select dayname(current_date);
+-----------------------+
| dayname(current_date) |
+-----------------------+
| Wednesday             |
+-----------------------+
1 row in set (0.00 sec)

  year()、month()、day()、time()...提取部分时间

mysql> select year(current_date),month(current_date),day(current_date),time(current_timestamp);
+--------------------+---------------------+-------------------+-------------------------+
| year(current_date) | month(current_date) | day(current_date) | time(current_timestamp) |
+--------------------+---------------------+-------------------+-------------------------+
|               2016 |                  11 |                30 | 16:12:57                |
+--------------------+---------------------+-------------------+-------------------------+
1 row in set (0.00 sec)

 

3、返回数字的时间函数

  datediff() : 计算两个日期相隔的天数

  举例:计算"2000-01-01"距离现在有多少天

mysql> select datediff(‘2016-11-30‘, 2000-01-01);
+--------------------------------------+
| datediff(‘2016-11-30‘, 2000-01-01) |
+--------------------------------------+
|                                 6178 |
+--------------------------------------+
1 row in set (0.00 sec)

  注:datediff()函数会忽略参数中的时钟值。

    sql server 同样具备datediff()函数,但可以在指定时间间隔的类型(如年、月、日、小时等)。sql server 实现上一个例子的方法:

select datediff(day, 2016-11-30, 2000-01-01);

 

以上是关于MySQL学习记录--操作时间数据的主要内容,如果未能解决你的问题,请参考以下文章

开学前的快乐------小白的MySQL最基本使用操作学习记录

MySQL学习笔记-数据类型与操作数据表

MySQL学习笔记-操作数据表中的记录

MySQL触发器

0基础学习mysql之DML-表中数据的操作

ElasticSearch学习问题记录——Invalid shift value in prefixCoded bytes (is encoded value really an INT?)(代码片段