MySql时间函数

时间获取

获取当前时间

  1. now()
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2017-06-13 14:02:16 |
+---------------------+
  1. sysdate()
mysql> select sysdate();
+---------------------+
| sysdate()           |
+---------------------+
| 2017-06-13 14:02:40 |
+---------------------+
1 row in set (0.00 sec)

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

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

-小时数:HOUR(Time)

mysql> select HOUR('13:13:13');
+------------------+
| HOUR('13:13:13') |
+------------------+
|               13 |
+------------------+
  • 分钟数:MINUTE(Time)
mysql> select MINUTE('13:13:13');
+--------------------+
| MINUTE('13:13:13') |
+--------------------+
|                 13 |
+--------------------+

-秒数:SECOND(Time)

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一样。

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)
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的天数
datediff('2017/05/02', '2016/11/15');  -- 168
  • timediff(time1,time2):返回time1-time2时间差(h:m:s)
timediff('11:12:13','10:03:14');  -- 01:08:59

时间戳转换,增,减函数

  • timestamp(date):把日期转换成时间戳
imestamp('2017-06-06'); -- 2017-06-06 00:00:00
  • timestamp(datetime1,datetime2):datetime1加上datetime2之后的时间
select timestamp('2017-06-06 08:08:08', '12:12:12'); -- 2017-06-06 20:20:20
  • timestampadd(unit,intervavl,datetime_expr):按照格式计算时间差
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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容