前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySql时间函数

MySql时间函数

作者头像
悠扬前奏
发布2019-05-28 14:42:55
5.2K0
发布2019-05-28 14:42:55
举报
文章被收录于专栏:悠扬前奏的博客

时间获取

获取当前时间

  1. now()
代码语言:javascript
复制
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2017-06-13 14:02:16 |
+---------------------+
  1. sysdate()
代码语言:javascript
复制
mysql> select sysdate();
+---------------------+
| sysdate()           |
+---------------------+
| 2017-06-13 14:02:40 |
+---------------------+
1 row in set (0.00 sec)

同now()函数不同的是,now()在执行开始时得到,sysdate()在函数执行时动态得到。

代码语言:javascript
复制
mysql> select now(), sleep(3),now();
+---------------------+----------+---------------------+
| now()               | sleep(3) | now()               |
+---------------------+----------+---------------------+
| 2017-06-13 14:10:40 |        0 | 2017-06-13 14:10:40 |
+---------------------+----------+---------------------+
mysql> select sysdate(),sleep(3),sysdate();
+---------------------+----------+---------------------+
| sysdate()           | sleep(3) | sysdate()           |
+---------------------+----------+---------------------+
| 2017-06-13 14:11:02 |        0 | 2017-06-13 14:11:05 |
+---------------------+----------+---------------------+
  1. 当前时间戳 current_timestamp,current_timestamp()
代码语言:javascript
复制
mysql> select current_timestamp,current_timestamp();
+---------------------+---------------------+
| current_timestamp   | current_timestamp() |
+---------------------+---------------------+
| 2017-06-13 14:15:52 | 2017-06-13 14:15:52 |
+---------------------+---------------------+

获取指定时间信息

  • 星期几:DAYOFWEEK(Date) 1=星期天,2=星期一,……7=星期六,ODBC标准
代码语言:javascript
复制
mysql> select DAYOFWEEK('2017-06-06');
+-------------------------+
| DAYOFWEEK('2017-06-06') |
+-------------------------+
|                       3 |
+-------------------------+
  • 星期几:WEEKDAY(Date) 0=星期一,1=星期二,……6= 星期天
代码语言:javascript
复制
mysql> select WEEKDAY('2017-06-06');
+-----------------------+
| WEEKDAY('2017-06-06') |
+-----------------------+
|                     1 |
+-----------------------+
1 row in set (0.00 sec)
  • 当月第几天:DAYOFMONTH(Date)
代码语言:javascript
复制
mysql> select DAYOFMONTH('2017-06-06');
+--------------------------+
| DAYOFMONTH('2017-06-06') |
+--------------------------+
|                        6 |
+--------------------------+
  • 当年第几天:DAYOFYEAR(Date)
代码语言:javascript
复制
mysql> select DAYOFYEAR('2017-06-06');
+-------------------------+
| DAYOFYEAR('2017-06-06') |
+-------------------------+
|                     157 |
+-------------------------+
  • 月份数值:MONTH(Date)
代码语言:javascript
复制
mysql> select MONTH('2017-06-06');
+---------------------+
| MONTH('2017-06-06') |
+---------------------+
|                   6 |
+---------------------+
  • 星期名:DAYNAME(Date)
代码语言:javascript
复制
mysql> select DAYNAME('2017-06-06');
+-----------------------+
| DAYNAME('2017-06-06') |
+-----------------------+
| Tuesday               |
+-----------------------+
  • 月份名:MONTHNAME(Date)
代码语言:javascript
复制
mysql> select MONTHNAME('2017-06-06');
+-------------------------+
| MONTHNAME('2017-06-06') |
+-------------------------+
| June                    |
+-------------------------+
  • 第几个季度:QUARTER(Date)
代码语言:javascript
复制
mysql> select QUARTER('2017-06-06');
+-----------------------+
| QUARTER('2017-06-06') |
+-----------------------+
|                     2 |
+-----------------------+
1 row in set (0.00 sec)
  • 第几周:WEEK(Date,first) fisrt默认值,表示周一是周的开始,0是周日开始
代码语言:javascript
复制
mysql> select WEEK('2017-06-06',1);
+----------------------+
| WEEK('2017-06-06',1) |
+----------------------+
|                   23 |
+----------------------+
  • 年份:YEAR(Date)
代码语言:javascript
复制
mysql> select YEAR('2017-06-06');
+--------------------+
| YEAR('2017-06-06') |
+--------------------+
|               2017 |
+--------------------+

-小时数:HOUR(Time)

代码语言:javascript
复制
mysql> select HOUR('13:13:13');
+------------------+
| HOUR('13:13:13') |
+------------------+
|               13 |
+------------------+
  • 分钟数:MINUTE(Time)
代码语言:javascript
复制
mysql> select MINUTE('13:13:13');
+--------------------+
| MINUTE('13:13:13') |
+--------------------+
|                 13 |
+--------------------+

-秒数:SECOND(Time)

代码语言:javascript
复制
mysql> select SECOND('13:13:13');
+--------------------+
| SECOND('13:13:13') |
+--------------------+
|                 13 |
+--------------------+

时间转换

日期/时间转换成字符串

MySQLDate/Time To Str(日期/时间转换成字符串)函数:date_format(date,format),time_format(time,format) date参数是合法的日期,format规定日期/时间的输出格式* 可以使用的格式有

格式

描述

%a

缩写星期名

%b

缩写月名

%c

月,数值

%D

带有英文前缀的月中的天

%d

月的天,数值(00-31)

%e

月的天,数值(0-31)

%f

微秒

%H

小时 (00-23)

%h

小时 (01-12)

%I

小时 (01-12)

%i

分钟,数值(00-59)

%j

年的天 (001-366)

%k

小时 (0-23)

%l

小时 (1-12)

%M

月名

%m

月,数值(00-12)

%p

AM 或 PM

%r

时间,12-小时(hh:mm:ss AM 或 PM)

%S

秒(00-59)

%s

秒(00-59)

%T

时间, 24-小时 (hh:mm:ss)

%U

周 (00-53) 星期日是一周的第一天

%u

周 (00-53) 星期一是一周的第一天

%V

周 (01-53) 星期日是一周的第一天,与 %X 使用

%v

周 (01-53) 星期一是一周的第一天,与 %x 使用

%W

星期名

%w

周的天 (0=星期日, 6=星期六)

%X

年,其中的星期日是周的第一天,4 位,与 %V 使用

%x

年,其中的星期一是周的第一天,4 位,与 %v 使用

%Y

年,4 位

%y

年,2 位

字符串转换为时间

str_to_date(str,format)函数作为date_format(date,format)的逆函数,能够吧字符串转换为时间 str参数为待转义的字符串,format是转换格式,格式含义同date_format一样。

代码语言:javascript
复制
select str_to_date('06/06/2017', '%m/%d/%Y'); -- 2017-06-06
select str_to_date('06/06/17' , '%m/%d/%y'); -- 2017-06-06
select str_to_date('06.06.2017', '%m.%d.%Y'); -- 2017-06-06
select str_to_date('08:08:30', '%h:%i:%s'); -- 08:08:30
select str_to_date('06.06.2017 06:06:30', '%m.%d.%Y %h:%i:%s'); -- 2017-06-06 06:06:30

其他

  • 天数/时间转换函数
    • to_days(date):返回日期到0000-00-00的天数
    • from_days(days):根据天数返回日期

    select to_days('2017-06-06'); -- 736851 select from_days(736851); -- '2017-06-06'

  • 秒数/时间转化函数
    • time_to_sec(time):返回时间到零点的秒数
    • sec_to_time(seconds):返回秒数的时间

    time_to_sec('06:06:06'); -- 21966 select sec_to_time(21966); -- 06:06:06

  • 时间,日期拼凑函数
    • makedate(year,dayfromyear)
    • maketime(hour,minutes,seconds)
代码语言:javascript
复制
select makedate(2017,160); -- 2017-06-06
select maketime(13,13,13); -- 13:13:13

时间计算

时间增减

  • DATE_ADD(date,INTERVAL expr type) date参数是合法的日期表达式,epxr参数是希望添加的时间间隔 type可取:

Type取值

MICROSECOND

SECOND

MINUTE

HOUR

DAY

WEEK

MONTH

QUARTER

YEAR

SECOND_MICROSECOND

MINUTE_MICROSECOND

MINUTE_SECOND

HOUR_MICROSECOND

HOUR_SECOND

HOUR_MINUTE

DAY_MICROSECOND

DAY_SECOND

DAY_MINUTE

DAY_HOUR

YEAR_MONTH

  • date_sub(date,INTERVAL expr type) 用法跟date_add相同,作用是减去指定的时间间隔

时间差

  • datediff(date1,date2):返回date1-date2的天数
代码语言:javascript
复制
datediff('2017/05/02', '2016/11/15');  -- 168
  • timediff(time1,time2):返回time1-time2时间差(h:m:s)
代码语言:javascript
复制
timediff('11:12:13','10:03:14');  -- 01:08:59

时间戳转换,增,减函数

  • timestamp(date):把日期转换成时间戳
代码语言:javascript
复制
imestamp('2017-06-06'); -- 2017-06-06 00:00:00
  • timestamp(datetime1,datetime2):datetime1加上datetime2之后的时间
代码语言:javascript
复制
select timestamp('2017-06-06 08:08:08', '12:12:12'); -- 2017-06-06 20:20:20
  • timestampadd(unit,intervavl,datetime_expr):按照格式计算时间差
代码语言:javascript
复制
timestampdiff(hour,'2017-06-06 12:00:00','2017-06-07 13:13:00'); -- 25
select timestampdiff(day,'2017-06-06 12:00:00','2017-06-07 13:13:00'); -- 1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.06.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 时间获取
    • 获取当前时间
      • 获取指定时间信息
      • 时间转换
        • 日期/时间转换成字符串
          • 字符串转换为时间
            • 其他
            • 时间计算
              • 时间增减
                • 时间差
                  • 时间戳转换,增,减函数
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档