MySQL 日期字符串转换

日期查询

1)查询当前时间日期
  • now() 获取 当前日期和时间 //2018-04-12 18:18:57
  • curdate() 当前日期,///2018-04-12
  • curtime() 当前时间 //18:18:57
  • current_time() ; //同curtime(),current_time
  • current_date() ; // 同curdate(),current_date
  • current_timestamp() //同now()
    内置函数的比较
2)时间戳
  • unix_timestamp([date]) 将日期转化为时间戳,参数可以不写默认now()
    • date 可以是日期时间类型 也可以是时间字符串 ‘2018-2-12’
    mysql> select from_unixtime(unix_timestamp('2018:4:8'));
            +------------------------------------------------+
            |    from_unixtime(unix_timestamp('2018:4:8'))   |
            +------------------------------------------------+
            |   2018-04-08 00:00:00                          |
  • from_unixtime(timestamp [,pattern]) 根据format格式化时间戳
    • timestamp : 时间戳即 UNIX_TIMESTAMP()
    • pattern 目标的模式字符串。使用format参数后返回的结果是字符串。常用的时间格式化占位符如下更多参数请参考,
      • %Y 年,四位数字
      • %y 年,后两位数字
      • %m 月 ,数字[1-12]
      • %d 日,月份里的第几天,两位数字[1-31]
      • %H 小时,24进制 [0-23]
      • %h 小时,12进制[0-11]
      • %i 分钟 [0-59]
      • %s | %S 秒 0-59

这里写图片描述

3)时间截取(返回对应的日期,时间或者数字)
  • date(expr) // 如果解析失败返回Null,返回日期类型date
  • time(expr) //返回时间类型 time
  • timestamp(exper,format) //返回混合日期和时间,datetime 类型
  • year(expr) //返回数字
  • month(expr)//返回数字【1-12】
  • day(expr) //返回数字【1-31】
  • hour(expr) //返回数字【0-23】
  • minute(expr) //返回数字【0-59】
  • last_day(date) //返回最后一天 ,返回date类型 //2018-04-30
  • to_days(expr) //返回到公元0年一月一日的总天数
    expr :时间字符串,日期字符串或者日期时间类型。
    对于截取年,月,日,时,分,秒返回的都是对应的字符串,因为时间日期类型mysql 本身就只提供了date,time ,datetime,timestamp,year这五种类型

    select date(now()),time('2018-04-19 11:10:11'),year(now()),to_days(now());
        2018-04-19        11:10:11                      2018      737168

日期操作

  • ADDDATE(date,INTERVAL expr unit)
    • date 要操作的日期时间,可以是日期类型也可以是日期字符串
    • INTERVAL: MySQL关键字 ,意思是间隔,间隙
    • unit 操作的单元,年,月,日,时,分,秒对应YEAR,MONTH,DAY,HOUR,MINUTE,SECOND
    • expr 想要增加或减少的时间单位。expr>0,增加,expr<0减少
    • DATE_ADD(date,INTERVAL expr unit)类似ADDDATE()
    • 返回结果是字符串
  • ADDTIME(expr1,expr2) 时间相加 expr1+expr2
    这里写图片描述
  • SUBDATE(date,INTERVAL expr unit)DATE_SUB(date,INTERVAL expr unit)
  • DATEDIFF(expr1, expr2) 计算两个表达式之间的时间差(expr1-expr2 )天,
SELECT
    DATEDIFF(
        '2018-4-23',
        '2018-4-12 12:12:23'),
    DATEDIFF(
        now(),
        DATE_ADD(now(), INTERVAL 12 DAY)
    )

  11                 -12
日期时间类型转字符串
  • DATE_FORMAT(date,pattern) //转为字符串
  • TIME_FORMAT(date,pattern) //只能转化时间,不能转化日期
  • from_unixtime(timestamp,pattern) //时间戳转为字符串
select DATE_FORMAT(now(),'%Y-%m-%d %H:%i-%s'),TIME_FORMAT(now(),'%Y-%m-%d %H:%i-%s');
      2018-04-23 15:15-26                        0000-00-00 15:15-26
字符串转时间

str_to_date(dateStr,pattern)
- dateStr :字符串日期表达式
- pattern :匹配模式

    select  str_to_date('2017/12/23','%Y/%m/%d');
                2017-12-23

猜你喜欢

转载自blog.csdn.net/yamadeee/article/details/80137780