zoukankan      html  css  js  c++  java
  • MySQL日期时间函数

    https://www.jianshu.com/p/01296699e3e7

    NOW()、SYSDATE()、CURRENT_TIMESTAMP()
    返回当前的日期和时间(以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式)

    -- 2019-02-03 17:36:53
    SELECT NOW()
    -- 20190203173653.000000
    SELECT CURRENT_TIMESTAMP() + 0
    CURDATE()、CURRENT_DATE()
    返回当前的日期(以'yyyy-mm-dd'或yyyymmdd格式)

    -- 2019-02-03
    SELECT CURDATE()
    -- 2019-02-03
    SELECT CURRENT_DATE()
    -- 20190203
    SELECT CURDATE() + 0
    CURTIME()、CURRENT_TIME()
    返回当前的时间(以'hh:mm:ss'或hhmmss格式)

    -- 09:59:37
    SELECT CURTIME()
    -- 095937.000000
    SELECT CURRENT_TIME() + 0
    DATE()
    返回日期或日期/时间表达式的日期部分

    -- 2018-01-09
    SELECT DATE('2018-01-09 09:45:45')
    -- 2018-01-09
    SELECT DATE('20180109')
    -- NULL
    SELECT DATE('123')
    EXTRACT()
    返回日期/时间的单独部分,比如年、月、日、小时、分钟等
    语法:EXTRACT(unit FROM date)
    其中unit值如下:
    MICROSECOND、SECOND、MINUTE
    HOUR、DAY、WEEK、MONTH、
    QUARTER、YEAR、HOUR_MINUTE
    DAY_MICROSECOND、DAY_SECOND
    DAY_MINUTE、DAY_HOUR、YEAR_MONTH
    SECOND_MICROSECOND、MINUTE_MICROSECOND MINUTE_SECOND、HOUR_MICROSECOND、HOUR_SECOND

    SELECT EXTRACT(YEAR FROM NOW()) year,
    EXTRACT(MONTH FROM NOW()) month,
    EXTRACT(DAY FROM NOW()) day
    DATE_ADD()、ADDDATE()
    向日期添加指定的时间间隔,date参数是合法的日期表达式,expr参数是您希望添加的时间间隔(多个值以任意分隔符拼接)
    语法:DATE_ADD(date,INTERVAL expr 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

    -- 向指定字段添加两天
    SELECT id,DATE_ADD(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders
    -- 向指定字段减30分钟
    SELECT closing_time,DATE_ADD(closing_time,INTERVAL -30 MINUTE) FROM work_shift_detail
    -- 向指定时间加1分1秒(1:1 1-1都行)
    SELECT DATE_ADD('2017-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND) result;
    -- 综合示例:查询最晚打卡时间(下班打卡时间加上下班有效打卡时间)
    SELECT DATE_ADD(closing_time,
    INTERVAL + IF(ISNULL(closing_valid_time),0,closing_valid_time) MINUTE)
    as lateClosingTime
    DATE_SUB()、SUBDATE()
    从日期减去指定的时间间隔,参数同date_add
    语法:DATE_SUB(date,INTERVAL expr type)

    -- 减去两天
    SELECT DATE_SUB(OrderDate,INTERVAL 2 DAY)
    DATEDIFF()
    返回两个日期之间的天数,date1和date2参数是合法的日期或日期/时间表达式,只有值的日期部分参与计算
    语法:DATEDIFF(date1,date2)

    -- 1
    SELECT DATEDIFF('2017-12-30','2017-12-29') AS DiffDate
    -- 38
    SELECT DATEDIFF('20171230','2017-11-22') AS DiffDate
    -- 0
    SELECT DATEDIFF('2008-12-30 19:20:54','2008-12-30 11:20:54') AS DiffDate
    DATE_FORMAT()、STR_TO_DATE()
    DATE_FORMAT(date,format),按指定格式对日期进行格式化操作
    STR_TO_DATE(str,format),将指定格式字符串转换为日期

    -- 2019-02-05
    SELECT DATE_FORMAT(NOW(), "%Y-%m-%d")
    -- 2019-02-05 16:19:03
    SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')
    format取值如下:

    TIME_FORMAT()
    和date_format()类似,但time_format只处理小时、分钟和秒(其余符号产生一个null值或0)
    语法:TIME_FORMAT(time,format)

    -- 08 01
    SELECT TIME_FORMAT('08:01:23','%h %i')
    -- 08:01
    SELECT TIME_FORMAT('2018-01-10 08:01:23','%h:%i')
    UNIX_TIMESTAMP()
    返回一个unix时间戳(从'1970-01-01 00:00:00'gmt开始的秒数,date默认值为当前时间)
    语法:UNIX_TIMESTAMP()、UNIX_TIMESTAMP(date)

    -- 1516423434
    SELECT UNIX_TIMESTAMP()
    -- 1516423424
    SELECT UNIX_TIMESTAMP('2018-01-20 12:43:44')
    FROM_UNIXTIME()
    默认以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的值(根据返回值所处上下文是字符串或数字)
    语法:FROM_UNIXTIME(unix_timestamp)、FROM_UNIXTIME(unix_timestamp,format)

    -- 2018-01-20 12:43:44
    SELECT FROM_UNIXTIME(1516423424)
    -- 18 01 20 12:51:55 2018
    SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%y %m %d %h:%i:%s %x')
    TIME_TO_SEC()
    返回time值有多少秒
    语法:TIME_TO_SEC(time)

    -- 80580
    SELECT TIME_TO_SEC('22:23:00')
    SEC_TO_TIME()
    以'hh:mm:ss'或hhmmss格式返回秒数转成的time值(根据返回值所处上下文是字符串或数字)
    语法:SEC_TO_TIME(seconds)

    -- 22:23:00
    SELECT SEC_TO_TIME(80580)
    -- 222300.000000
    SELECT SEC_TO_TIME(80580) + 0
    DAYOFWEEK()
    返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准)
    语法:DAYOFWEEK(date)

    -- 结果:7
    SELECT DAYOFWEEK('2018-01-20')
    WEEKDAY()
    返回日期date是星期几(0=星期一,1=星期二,……6=星期天)
    语法:WEEKDAY(date)

    -- 结果:5
    SELECT WEEKDAY('2018-01-20 20:00:00')
    DAYOFMONTH()
    返回date是一月中的第几日(在1到31范围内)
    语法:DAYOFMONTH(date)

    -- 结果:20
    SELECT DAYOFMONTH('2018-01-20')
    DAYOFYEAR()
    返回date是一年中的第几日(在1到366范围内)
    语法:DAYOFYEAR(date)

    -- 结果:51
    SELECT DAYOFYEAR('2018-02-20')
    MONTH()
    返回date中的月份数值
    语法:MONTH(date)

    -- 结果:1
    SELECT MONTH('2018-01-20')
    DAYNAME()
    返回date是星期几(按英文名返回)
    语法:DAYNAME(date)

    -- 结果:Saturday
    SELECT DAYNAME('2018-01-20')
    MONTHNAME()
    返回date是几月(按英文名返回)
    语法:MONTHNAME(date)

    -- 结果:January
    SELECT MONTHNAME('2018-01-20')
    QUARTER()
    返回date是一年的第几个季度
    语法:QUARTER(date)

    -- 结果:3
    SELECT QUARTER('2018-08-20')
    WEEK()
    返回日期的星期数,mode默认值0,mode取值1表示周一是周的开始,0从周日开始
    语法:WEEK(date[,mode])

    -- 结果:2
    SELECT WEEK('2018-01-20')
    -- -- 结果:3
    SELECT WEEK('2018-01-20',1)
    YEAR()
    返回date的年份(范围在1000到9999)
    语法:YEAR(date)

    -- 结果:2018
    SELECT YEAR('2018-01-20')
    HOUR()
    返回time的小时数(范围是0到23)
    语法:HOUR(time)

    -- 结果:10
    SELECT HOUR('10:05:03')
    MINUTE()
    返回time的分钟数(范围是0到59)
    语法:MINUTE(time)

    -- 结果:15
    SELECT MINUTE('1998-02-03 10:15:03')
    SECOND()
    返回time的秒数(范围是0到59)
    语法:YEAR(date)

    -- 结果:30
    SELECT SECOND('22:24:30')
    PERIOD_ADD()
    增加n个月到时期p并返回(p的格式yymm或yyyymm)
    语法:PERIOD_ADD(P,N)

    -- 结果:201809
    SELECT PERIOD_ADD('201801',8)
    SPERIOD_DIFF()
    返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm)
    语法:PERIOD_DIFF(P1,P2)

    -- 结果:11
    SELECT PERIOD_DIFF(9802,199703)
    TO_DAYS()
    返回日期date是西元0年至今多少天(不计算1582年以前)
    语法:TO_DAYS(date)

    -- 结果:728779
    SELECT TO_DAYS(950501)
    -- 结果:737070
    SELECT TO_DAYS('2018-01-11')
    FROM_DAYS()
    给出西元0年至今多少天返回date值(不计算1582年以前)
    语法:FROM_DAYS(N)

    -- 结果:2018-01-11
    SELECT FROM_DAYS(737070)

    作者:若汐缘
    链接:https://www.jianshu.com/p/01296699e3e7
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    Android 系统日期时间的获取
    Android What is Application
    Android 所有颜色代码
    Android onNewIntent
    Android Activity管理类
    Android 应用启动渐变效果
    算法的的代价及其度量
    算法的设计与分析
    算法的描述
    数据结构与算法(python版)教程
  • 原文地址:https://www.cnblogs.com/ellafive/p/13618719.html
Copyright © 2011-2022 走看看