博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL:日期函数、时间函数总结
阅读量:6157 次
发布时间:2019-06-21

本文共 4168 字,大约阅读时间需要 13 分钟。

hot3.png

小结:

     1 获取当前时间(动态的,限定死的)

          now();sysdate()

     2 日期转函数:date_format(‘date’,’format'),

        时间转函数: time_format(‘time’,’format')

        日期、天数)转换函数:to_days(date), from_days(days)

      (时间、秒)转换函数:time_to_sec(‘time'), sec_to_time(‘seconds')

        拼凑日期、时间函数:makedate(year,dayofyear), maketime(hour,minute,second)

      (Unix 时间戳、日期)转换函数

         DATE_ADD(d,INTERVAL expr type)函数返回起始日期d加上一个时间段后的日期。

         为日期减去一个时间间隔:date_sub()

1 MySQL 获得当前日期时间 函数

1.1 获得当前日期+时间(date + time)函数:

now()

select now();

sysdate()

select sysdate()

      不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:

select now(),sysdate(), sleep(3), now() as now2,sysdate() as sysdate2;

sysdate() 日期时间函数,一般情况下很少用到。

1.2 MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()     两种方式都可以。后面的()可加可去

2 MySQL 日期转换函数、时间转换函数

2.1  日期、时间转换函数:date_format(‘date’,’format'), time_format(‘time’,’format') 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(‘str’,’format') 函数的 一个逆转换。

2.2 字符串转换为日期)函数:str_to_date(‘str', ‘format')

以下的写法都是错的,必须要给str和format加上单引号

select str_to_date(08/09/2008, %m/%d/%Y);  2008-08-09

select str_to_date(08/09/08 , %m/%d/%y);  2008-08-09

select str_to_date(08.09.2008, %m.%d.%Y);  2008-08-09
select str_to_date(08:09:30, %h:%i:%s);  08:09:30

select str_to_date(08.09.2008 08:09:30, %m.%d.%Y %h:%i:%s);  2008-08-09 08:09:30

这是为什么呢?

2.3 (日期、天数)转换函数:to_days(date), from_days(days)

select to_days(‘0000-00-00');      结果为null,空

select to_days('2008-08-08');    

2.4(时间、秒)转换函数:time_to_sec(‘time'), sec_to_time(‘seconds')

select time_to_sec('01:00:05');        -- 结果:'3605’     时间转秒

select sec_to_time('3605');      -- 结果:'01:00:05'     秒转时间

2.5 拼凑日期、时间函数:makedate(year,dayofyear), maketime(hour,minute,second)

拼凑日期:select makedate(,); 举例:

     一位和两位的时候默认是从2000以后记得,三位的时候默认年份首位是0

sql

结果

 select makedate('7','100')  t1,

    makedate('54','100')  t2,

    makedate('654','100')  t3,

    makedate('2009','100’)  t4;

拼凑时间:select maketime(,,);  '12:15:30'

     拼凑时间的时候分,秒最大只能取到59,超过之后,结果就为Null;小时最大能显示到838.

sql

结果

select 

    maketime('1','2','3’)  t1,

    maketime('100','2','3’)  t2,

    maketime('1000','2','3')  t3,

    maketime('1','60','3')  t4,

    maketime('1','2','60’)  t5

2.6 (Unix 时间戳、日期)转换函数

unix_timestamp(date),     日期转时间戳

from_unixtime(unix_timestamp),     时间戳转时间

from_unixtime(unix_timestamp,format)     按照指定格式时间戳转时间

下面是示例:

sql

结果

select unix_timestamp('1218290027')    t1,  

        unix_timestamp('2008-08-08') t2,  -- 1218124800

        unix_timestamp('2008-08-08 12:30:00') t3, —  1218169800  

 

        from_unixtime('1218290027') t4,  -- '2008-08-09 21:53:47'

        from_unixtime('1218124800') t5,  -- '2008-08-08 00:00:00'

        from_unixtime('1218169800') t6,  -- '2008-08-08 12:30:00'

 

        from_unixtime('1218169800', '%Y %D %M %h:%i:%s %x') t7 -- '2008 8th August 12:30:00 2008'

 

 

2.7 DATE_ADD(d,INTERVAL expr type)函数返回起始日期d加上一个时间段后的日期。

expr是一个表达式,用来指定从起始日期添加或减去的时间间隔值。

expr是一个字符串。对于负值的时间间隔,它可以用一个负号“-”开头。

expr表达式与后面的间隔类型type对应。

sql

结果

SELECT 

    DATE_ADD('2014-10-8 23:59:59',

        INTERVAL 1 SECOND) AS col1,

    DATE_ADD('2014-10-8 23:59:59',

        INTERVAL '1 1' YEAR_MONTH) AS col2,

时间间隔使用的是YEAR_MONTH;expr表达式中的年和月之间用空格隔开,因此该函数返回的结果是d日期中一年零一个月以后的日期和时间

    DATE_ADD('2014-10-8 23:59:59',

        INTERVAL '1 1' MINUTE_SECOND) AS col3;

    DATE_ADD('2014-10-9 00:00:01',

        INTERVAL - 1 SECOND) AS col4,

    DATE_ADD('2014-10-9',

        INTERVAL '-1 -1' YEAR_MONTH) AS col5;

使用DATE_ADD()函数执行日期减操作。

MySQL中的日期间隔类型如下表所示:

类型(type值) 含义 expr表达式的形式
YEAR YY
MONTH MM
DAY DD
HOUR hh
MINUTE mm
SECOND ss
YEAR_MONTH 年和月 YY和MM之间用任意符号隔开
DAY_HOUR 日和小时 DD和hh之间用任意符号隔开
DAY_MINUTE 日和分钟 DD和mm之间用任意符号隔开
DAY_SECOND 日和秒钟 DD和ss之间用任意符号隔开
HOUR_MINUTE 时和分 hh和mm之间用任意符号隔开
HOUR_SECOND 时和秒 hh和ss之间用任意符号隔开
MINUTE_SECOND 分和秒 mm和ss之间用任意符号隔开

DATE_ADD(d,INTERVAL expr type)函数中的type必须在上表中。而且,type必须是上表中的某一项,不能是其中几项的组合。因此,使用该函数时,一定要注意type的选择。

DATE_ADD(d,INTERVAL expr type)函数和ADDDATE(d,INTERVAL expr type)函数的作用相同。

2.8 为日期减去一个时间间隔:date_sub()

2.8.1 select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) t1;

 

2.8.2 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

sql

结果

SELECT 

    DATEDIFF('2008-08-08', '2008-08-01') d1,

    DATEDIFF('2008-08-01', '2008-08-08') d2;

SELECT 

    TIMEDIFF('2008-08-08 08:08:08',

            '2008-08-08 00:00:00') t1,

    TIMEDIFF('08:08:08', '00:00:00') t2; 

datediff(date1,date2):两个日期相减 date1减date2,返回天数。

timediff(time1,time2):两个日期相减 time1减time2,返回 time 差值。

注意:timediff(time1,time2) 函数的两个参数类型必须相同。

转载于:https://my.oschina.net/ChinaHaoYuFei/blog/729333

你可能感兴趣的文章
teamviewer 卸载干净
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>
前端第七天
查看>>
图解SSH原理及两种登录方法
查看>>
【总结整理】JQuery基础学习---样式篇
查看>>
查询个人站点的文章、分类和标签查询
查看>>
基础知识:数字、字符串、列表 的类型及内置方法
查看>>
JSP的隐式对象
查看>>