该如何才能与世界陷入爱河?

MySQL函数学习(三)-----日期和时间函数

注:笔记旨在记录

三、MySQL 日期和时间函数

3.1 获取时间、日期、年、月、日、周、日相关函数

\ 函 数 名 称 作 用
1 CURDATE 和 CURRENT_DATE 获取系统当前日期(YYYY-MM-DD)
2 CURTIME 和 CURRENT_TIME 获取系统当前时间(hh-mm-ss)
3 TIME 返回expr参数时间字符串(hh-mm-ss)
4 NOW 、CURRENT_TIMESTAMP 和 SYSDATE 获取系统当前时间(YYYY-MM-DD hh-mm-ss)
5 YEAR 和 YEARWEEK 返回date年 返回date的年+当前周次
6 MONTH 和 MONTHNAME 返回月份,返回月份英语名称
7 WEEK 、 WEEKDAY 和 DAYOFWEEK 一年中的第几周 、一周中的第几天
8 DAYOFYEAR、DAYOFMONTH、DAY、DAYOFWEEK、DAYNAME 年x日 月x日 月x日 周x日 周星期x

3.1.1 CURDATE(), CURRENT_DATE(), CURRENT_DATE --获取当前日期(YYYY-MM-DD)

1). 函数:

  • CURDATE() : 获取系统当前日期(YYYY-MM-DD)
  • CURRENT_DATE() : 与上等同
  • CURRENT_DATE : 与上等同

2). sql示例:

SELECT CURDATE(), CURRENT_DATE(), CURRENT_DATE,
       CURDATE()+0, CURRENT_DATE()+0, CURRENT_DATE+ 0

日期和时间函数1_1_CURDATE.png

都可在后面 '+0',转换为数值字符串


3.1.2 CURTIME(),CURRENT_TIME(),CURRENT_TIME -- 获取当前时间(hh-mm-ss)

1). 函数:

  • CURTIME() : 获取系统当前时间(hh-mm-ss)
  • CURRENT_TIME() : 与上等同
  • CURRENT_TIME : 与上等同

2). sql示例:

SELECT CURTIME(), CURRENT_TIME(), CURRENT_TIME,
       CURTIME()+0, CURRENT_TIME()+0, CURRENT_TIME+ 0

日期和时间函数1_2_CURTIME.png

都可在后面 '+0',转换为数值字符串


3.1.3 TIME(expr) --返回expr时间字符串

1). 函数:

  • TIME(expr): 返回expr时间或日期的时间部分,返回字符串

2). sql示例:

    SELECT TIME('2022-03-28 22:08:22'),TIME('132022'),TIME('13:20:22')

日期和时间函数1_3_TIME.png


3.1.4. NOW(),SYSDATE(),CURRENT_TIMESTAMP --获取当前时间(YYYY-MM-DD hh-mm-ss)

1). 函数:

  • NOW(): 获取系统当前时间(YYYY-MM-DD hh-mm-ss)
  • SYSDATE(): 与上等同
  • CURRENT_TIMESTAMP: 与上等同

2). sql示例:

SELECT NOW(),SYSDATE(),CURRENT_TIMESTAMP,SLEEP(2), NOW(),SYSDATE(),CURRENT_TIMESTAMP
SELECT NOW()+0,SYSDATE()+0,CURRENT_TIMESTAMP+0

日期和时间函数1_4_NOW.png

都可在后面 '+0',转换为数值字符串


3.1.5. YEAR(date),YEARWEEK(date),YEARWEEK(date,mode) --返回date年[+当前周次]

1). 函数:

  • YEAR(date): 返回date年。
  • YEARWEEK(date): 返回date的年+当前周次。
  • YEARWEEK(date,mode): 返回date的年+当前周次,mode指定模式

2). sql示例:

SELECT YEAR('2022-03-28'), YEARWEEK('2022-03-27') 

日期和时间函数1_5_YEAR.png

SELECT YEARWEEK('2022-03-27',1),YEARWEEK('2022-03-27',2),YEARWEEK('2022-03-27',3),YEARWEEK('2022-03-27',4),YEARWEEK('2022-03-27',5)

日期和时间函数1_6_YEARWEEK.png


3.1.6. MONTH(date),MONTHNAME(date) -- 返回月份,月份英语名称

1). 函数:

  • MONTH(date):返回月份
  • MONTHNAME(date): 返回月份名称

2). sql示例:

SELECT MONTH('2022-03-28'),MONTHNAME('2022-03-28')

日期和时间函数1_7_MONTH.png


3.1.7. WEEK(date[,mode]), WEEKDAY(date) ,DAYOFWEEK(date) -- 一年中的第几周 、一周中的第几天

1). 函数:

  • WEEK(date[,mode]): 一年中的第几周,mode用于指定模式
  • WEEKDAY(date): 一周中的第几天,从星期一开始计数,序号从0开始,0-6
  • DAYOFWEEK(date): 一周中的第几天,从星期日开始计数,序号从1开始,1-7 ||所以与WEEKDAY(date)函数值相差2或5

2). sql示例:

SELECT WEEK('2022-03-28'),WEEKDAY('2022-03-28'),DAYOFWEEK('2022-03-28')

日期和时间函数1_8_WEEK.png


3.1.8. DAYOFYEAR(date),DAYOFMONTH(date),DAY(date),DAYOFWEEK(date),DAYNAME(date) -- 返回第几天或星期几

1). 函数:

  • DAYOFYEAR(date): 一年的第几天
  • DAYOFMONTH(date)等同于DAY(date): 当前月的第几天
  • DAYOFWEEK(date): 一周的第几天(第一天为星期一)
  • DAYNAME(date): 一周的星期几

2). sql示例:

SELECT DAYOFYEAR('2022-03-28'),DAYOFMONTH('2022-03-28'),DAY('2022-03-28'),DAYOFWEEK('2022-03-28'),DAYNAME('2022-03-28')

日期和时间函数1_8_DAYOFYEAR.png


3.2 时间,时间计算,时间戳相关函数

\ 函 数 名 称 作 用
1 UNIX_TIMESTAMP 返回时间戳
2 __FROM_UNIXTIME 时间戳转时间
3 TIME_TO_SEC 和a SEC_TO_TIME 时间转秒,秒转时间
4 DATE_ADD 和 ADDDATE 时间增加,年月日时分秒毫秒等
5 DATE_SUB 和 SUBDATE 时间减少,年月日时分秒毫秒等
6 ADDTIME 和 SUBTIME 时间加减

3.2.1. UNIX_TIMESTAMP() -- 返回时间戳

1). 函数:

  • UNIX_TIMESTAMP()`: 返回时间(无参时为当前时间)的时间戳,从'1970-01-01 00:00:00'GMT后开始计时

2). sql示例:

SELECT UNIX_TIMESTAMP('1970-01-01'),UNIX_TIMESTAMP('1970-01-01 00:00:00'),UNIX_TIMESTAMP('1970-01-01 23:59:59'),UNIX_TIMESTAMP('1970-01-02 00:00:00')

日期和时间函数2_1_UNIX_TIMESTAMP.png


3.2.2. FROM_UNIXTIME(unix_timestamp,format) -- 时间戳转时间

1). 函数:

  • __FROM_UNIXTIME(unix_timestamp,format):将时间戳unix_timestamp转换为时间,可以指定输出时间的格式。与UNIX_TIMESTAMP()互为反函数。

2). sql示例:

SELECT UNIX_TIMESTAMP('2022-03-28'),FROM_UNIXTIME(1648396801),FROM_UNIXTIME(1648396822,'%Y-%m-%d %H:%i:%S')

日期和时间函数2_2_FROM_UNIXTIME.png

注:
常用输出格式参数如下:


3.2.3. TIME_TO_SEC 和a SEC_TO_TIME -- 时间转秒,秒转时间

1). 函数:

  • TIME_TO_SEC(time):时间转秒。
  • SEC_TO_TIME(seconds): 秒转时间

2). sql示例:

    SELECT TIME_TO_SEC('22:22:22'),SEC_TO_TIME(80542)

日期和时间函数2_3_TIME_TO_SEC.png

3.2.4. DATE_ADD(date,INTERVAL expr unit),ADDDATE(date,INTERVAL expr unit),ADDDATE(expr,days) -- 时间增加

1). 函数:

  • DATE_ADD(date,INTERVAL expr unit):通过参数对时间date进行增加
  • ADDDATE(date,INTERVAL expr unit):通过参数对时间date进行增加
  • ADDDATE(expr,days):在日期expr基础上增加days天

2). sql示例:

SELECT '2022-03-28',
    DATE_ADD('2022-03-28',INTERVAL 1 SECOND) as '1 SECOND',
    DATE_ADD('2022-03-28',INTERVAL 1 HOUR)   as '1 HOUR',
    DATE_ADD('2022-03-28',INTERVAL '1:1' MINUTE_SECOND) as "'1:1' MINUTE_SECOND",
    ADDDATE('2022-03-28',INTERVAL 7 MONTH) as '7 MONTH',
    ADDDATE('2022-03-28',5) as "days = 5"

日期和时间函数2_4_DATE_ADD.png

注:INTERVAL expr unit参数有多种选择,常用的有'SECOND'(秒),'MINURE'(分钟),'HOUR'(小时)等。


3.2.5. DATE_SUB(date,INTERVAL expr unit),SUBDATE(date,INTERVAL expr unit),SUBDATE(expr,days) -- 时间减少

1). 函数:

  • DATE_SUB(date,INTERVAL expr unit):通过参数对时间date进行减少
  • SUBDATE(date,INTERVAL expr unit):通过参数对时间date进行减少
  • SUBDATE(expr,days):在日期expr基础上减少days天

2). sql示例:

SELECT '2022-03-28',
    DATE_SUB('2022-03-28',INTERVAL "1:3" HOUR_MINUTE) as '"1:3" HOUR_MINUTE',
    DATE_SUB('2022-03-28',INTERVAL "2:3" MINUTE_MICROSECOND)   as '"2:3" MINUTE_MICROSECOND',
    DATE_SUB('2022-03-28',INTERVAL '1:1' YEAR_MONTH) as "'1:1' YEAR_MONTH",
    SUBDATE('2022-03-28',INTERVAL "5:20" DAY_HOUR) as '"5:20" DAY_HOUR',
    SUBDATE('2022-03-28',5) as "days = 5"

日期和时间函数2_5_DATE_SUB.png


3.2.6. ADDTIME(expr1,expr2),SUBTIME(expr1,expr2) -时间加减

1). 函数:

  • ADDTIME(expr1,expr2): expr1基础上增加expr2时间
  • SUBTIME(expr1,expr2): expr1基础上减少xpr2时间

2). sql示例:

SELECT '2022-03-28 12:12:12',
       ADDTIME('2022-03-28 12:12:12','02:02:02') as "+ 02:02:02",
       SUBTIME('2022-03-28 12:12:12','02:02:02') as "- 02:02:02",
       SUBTIME('2022-03-28 12:12:12','02022') as " - 00:20:22"  

日期和时间函数2_6_ADDTIME.png


posted @ 2022-04-28 11:09  hmpn  阅读(146)  评论(0编辑  收藏  举报