mysql year 类型_Mysql时间函数的一些总结

前言:


这段时间,花了大把的时间进行了一个ETL任务调度监控的dashboard开发,开发过程中涉及了大量基于时间维度的sql查询,在写sql的过程中使用了大量的时间函数,在这里做一点记录。

常用的一些Mysql时间函数


  • 常用:

CURDATE()获取当前日期
CURTIME()获取当前时间
NOW()获取当前时间与日期
UNIX_TIMESTAMP(date)获取日期的UNIX时间戳
FROM_UNIXTIME()获取UNIX时间戳的日期值
WEEK(date)返回日期date为一年中的第几周
YEAR(date)返回date的年份
HOUR(time)返回时间time的小时值
MINUTE(time)返回时间time的分钟值
MONTHNAME(date)返回时间date的英文月份
EXTRACT(unit  FROM  date)

从日期中抽取出某个单独的部分或组合

(SELECT now(),extract(YEAR_MONTH FROM now())-- 年月)

TIMEDIFF(expr1, expr2)返回两个日期相减(expr1 − expr2 )相差的时间数(两个参数类型必须相同)
DATEDIFF(expr1, expr2)返回两个日期相减(expr1 − expr2 )相差的天数
DATE_FORMAT(date,fmt)日期格式化为字符
  • 日期时间运算函数:

    分别为给定的日期date加上(add)或减去(sub)一个时间间隔值expr

格式:    DATE_ADD(date, INTERVAL  expr  unit);    DATE_SUB(date, INTERVAL  expr  unit);interval是间隔类型关键字expr是一个表达式,对应后面的类型unit是时间间隔的单位(间隔类型)(20个)            HOUR 小时            MINUTE 分            SECOND 秒            MICROSECOND 毫秒            YEAR 年              MONTH 月            DAY 日               WEEK 周            QUARTER 季           YEAR_MONTH 年和月            DAY_HOUR 日和小时     DAY_MINUTE 日和分钟            DAY_ SECOND 日和秒    HOUR_MINUTE 小时和分            HOUR_SECOND 小时和秒  MINUTE_SECOND 分钟和秒举例:DATE_SUB(CURDATE(), INTERVAL 1 DAY)   --昨天 2020-07-17  时间戳:UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY))DATE_SUB(CURDATE(), INTERVAL 1 WEEK)  --一周前   时间戳:UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))DATE_SUB(CURDATE(), INTERVAL 1 MONTH) --一月前   时间戳:UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))DATE_SUB(CURDATE(), INTERVAL 1 YEAR)  --一年前   时间戳:UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 YEAR

Mysql如何获取一个月每天的日期 


  • 干货:

select   date_add(curdate(), interval(cast(help_topic_id as signed integer) - 30) day) day  from mysql.help_topicwhere help_topic_id  < day(last_day(curdate()))order by help_topic_id————这个需求呢,来源于我需要先知道前一个月的所有时间,然后进行left join 当前不全的日期数据,来保证不全的日期数据的结果为0,而不是null。select        st.day as dayTime,        IFNULL(st2.trendScheduling, 0) trendScheduling        from        (        select        date_add(        curdate(),        interval(cast(help_topic_id as signed integer) - 30) day        ) day        from        mysql.help_topic        where        help_topic_id > day(last_day(curdate()))        order by        help_topic_id        ) st        left join(        。。。。。省略        )st2  on st2.dayTime=st.day order by st.day asc
  • 注意:

help_topic是mysql库下的一张表,但是你可能没有这张表的权限。解决方法:可以执行该SQL:GRANT SELECT ON mysql.help_topic TO '用户'@'源'(给用户赋权限);取消用户权限SQL:REVOKE SELECT ON mysql.help_topic FROM '用户'@'源';

补充:mybatis中常用符号的转义


  • 在myBatis的xml配置文件中,SQL语句中含有特殊字符需要转义,比如大于小于等字符,不转义就会报错啦。

<<=>>=&'"
>>=<<=&'"

总结:


懈怠了一阵子,重新启程。4bb0dbe3d73cb2821e743f32dcb01f25.png4bb0dbe3d73cb2821e743f32dcb01f25.png4bb0dbe3d73cb2821e743f32dcb01f25.png

“朝着目标前进 路上总会有倦怠 走岔路的时候没关系 停下来 耽误点时间也没关系 保证路是对的就好 你回过头看以前自己为之纠结的事 以为过不去的坎 都会成为小事”

6721325ebd27e6a84a2b4f4b34b1ab14.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值