• mySql常用时间函数


    1.取一个日期字段的年月:

    方法一:select date_format(日期字段,'%Y-%m') as '日期' from 表

    方法二:使用left()函数来截取

                select left(日期字段,7) as date from tablename  (2019-07:占用7个字符)

    方法三:使用substring()函数来截取

                select substring(日期字段,0,7) as date from tablename

    2.datetime和timestamp区别:

    1. 存储方式不一样,IMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。
    2. 占用存储空间不同。timestamp储存占用4个字节,datetime储存占用8个字节
    3. 可表示的时间范围不同。timestamp可表示范围:1970-01-01 00:00:00~2038-01-09 03:14:07,datetime支持的范围更宽1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
    4. TIMESTAMP类型在默认情况下,insert、update 数据时,TIMESTAMP列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。
    5. 索引速度不同。timestamp更轻量,索引相对datetime更快。
    6. timestamp类型字段特殊性:

      timestamp类型在自动初始化的时候,会自动设置成当前时间,会自动更新,默认的设置为:

      `field` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

         如果不想要这样,可以将timestamp设置为默认为空或者设置具体的默认值

    3.mysql获取日期的时间函数:

            now():在执行开始时值就得到了

            sysdate():在函数执行时动态得到值

    例子: select now(),sleep(3),now();                 结果:

            select SYSDATE(),SLEEP(3),SYSDATE();  结果:

    可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒.

           curdate():获取当前日期 ,current_date() ,current_date  同 

           curtime():获取当前时间 ,current_time() ,current_time  同

    例子: select curdate();                                          结果: 

              

              select curtime();                                          结果: 

          extract():  选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒

    例子:select extract(year from now()) as year;          结果: 

              last_day:返回月份中的最后一天

    例子:select last_day('2008-02-03')                                                                       结果:

    MySQL last_day() 函数非常有用,比如我想得到当前月份中有多少天,可以这样来计算:

    例子:select now(), day(last_day(now())) as days;                                                  结果:

     4.Mysql日期时间计算函数

    在使用mysql的过程中,需要对日期进行计算,比如对某个日期加上几天,几个小时等操作

           date_add()函数语法:  DATE_ADD(date,INTERVAL expr unit)

           date:起始日期或者起始时间

       expr:指定的是一个间隔值,在起始时间中增加或者减少,注意:expr是一个字符串.对于负值间隔,可以以"-"开头

       unit:表示的是一个单位,比如,加上的是1天还是一个小时

           4.1对某个日期加上n天的操作  

                select date_add('2018-06-26',INTERVAL '5' day);                                       结果: 

         4 .2对某个日期加上n小时,n分钟,n秒的操作
              select date_add('2018-06-26 23:59:59',INTERVAL 1 hour);                         结果: 

                select date_add('2018-06-26 23:59:59',INTERVAL 1 minute);                      结果:

                select date_add('2018-06-26 23:59:59',INTERVAL 1 second);                      结果: 

           4.3对某个日期加上n分钟n秒的操作

                select date_add('2018-06-26 23:59:59',INTERVAL '1:1' MINUTE_SECOND);   结果:

           4.4对某个日期加上n小时n分钟n秒的操作

                select date_add('2018-06-26 23:59:59',INTERVAL '1:1:1' HOUR_SECOND);   结果:

          4.5对某个日期加上n小时n分钟的操作

                 select date_add('2018-06-26 23:59:59',INTERVAL '1:1' HOUR_MINUTE);       结果:

         

         4.6.对某个日期加上几天几小时几分钟几秒钟

               select date_add('2018-06-26 23:59:59',INTERVAL '2 2:1:1' DAY_SECOND);      结果:

    注:对于日期的减法,尽量用date_sub()函数来实现.

    5.Mysql日期时间相减函数

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

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

         例子:select datediff('2008-08-08', '2008-08-01') as days;     结果:7

                  select datediff('2008-08-01', '2008-08-08') as days;     结果:-7

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

         例子:select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00');  结果:08:08:08

                  select timediff('08:08:08', '00:00:00');                                      结果:08:08:08

    6.字符串转换为日期:str_to_date()

        函数:str_to_date(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

    7.date_format(),time_format():将日期,时间转换成字符串,是str_to_date()的逆转换

             

     

                

        

  • 相关阅读:
    2020-02-26 今天学了啥?
    2020-02-25 今天学了啥?
    CSS选择器世界
    2019.12.21---今天学了啥?
    2019.12.20--今天学了啥?
    2019.12.19----今天学了啥?
    重拾算法之复杂度分析(大O表示法)
    es6之后,真的不需要知道原型链了吗?
    你真的了解FastClick吗?
    JavaScript中的对象与原型—你不知道的JavaScript上卷读书笔记(四)
  • 原文地址:https://www.cnblogs.com/zhukf/p/11956270.html
Copyright © 2020-2023  润新知