• 关于时间问题


    部分之前记在有道云的忘记出处了抱歉。

    部分函数介绍

    CURDATE() # 获取日期 年--2020-12-18
    now()         # 获取时间 2020-12-18 13:49:01
    sysdate()     # 2020-12-18 13:51:00
    date_sub() # 减去指定时间间隔 date_sub(curDate(), interval 1 day) # 当前时间减去1天
    interval 利用其做运算
    select curdate() - interval 1 day as test # 前-1天
    
    select curdate() - interval 1 month as test # 当前- 1月
    
    select curdate() - interval "1 1" year_month as test # 当前-1年1月
    
    

    时间获取

    select YEAR(CURDATE()) as year;    --获取当前日期的年
    SELECT * FROM work.user_status_logs where year(operation_date) = "2020"
    select MONTH(CURDATE()) as month;   --获取当前日期的月
    select DATE(CURDATE()) as date;   --获取当前日期的年-月-日
    SELECT * FROM work.user_status_logs where date(operation_date) = "2020-11-04"
    select HOUR(sysdate()) as hour;   --获取当前时间的时
    select MINUTE(sysdate()) as minute;   --获取当前时间的分
    select SECOND(sysdate()) as second;   --获取当前时间的秒
    select TIME(sysdate()) as time;   --获取当前时间的时:分:秒

    获取时间间隔

    select to_days(now()) - to_days('20200506');   --比较两个日期间隔天数
    select datediff(now(),'20200506');   --比较两个日期间隔天数
    select TIMESTAMPDIFF(year,now(),'20220606');   --比较两个日期的间隔年数【后者-前者】
    select TIMESTAMPDIFF(quarter,now(),'20220606');   --比较两个日期的间隔季度数
    select TIMESTAMPDIFF(month,now(),'20220606');   --比较两个日期的间隔月数
    select TIMESTAMPDIFF(week,now(),'20220606');   --比较两个日期的间隔周数
    select TIMESTAMPDIFF(day,now(),'20220606');   --比较两个日期的间隔天数
    select TIMESTAMPDIFF(hour,now(),'20220606');   --比较两个日期的间隔小时数
    select TIMESTAMPDIFF(minute,now(),'20220606');   --比较两个日期的间隔分钟数
    select TIMESTAMPDIFF(second,now(),'20220606');   --比较两个日期的间隔秒数

    类型转换

    select date_format(now(),'%Y-%m-%d');   --当前时间转化成String
    select str_to_date('2020-05-07','%Y-%m-%d');   --当前String转化成DATE类型

    求近七天数据没有补0

    思路: 生成一个 近七天时间临时表 与 数据库表分组查询结果 进行联查, 得出最终结果。 

    没有补0操作使用 ifnull() 函数完成。  来自: https://www.cnblogs.com/snake23/p/9562646.html

    select a.click_date,ifnull(b.count,0) as count
    from (
        SELECT curdate() as click_date
        union all
        SELECT date_sub(curdate(), interval 1 day) as click_date
        union all
        SELECT date_sub(curdate(), interval 2 day) as click_date
        union all
        SELECT date_sub(curdate(), interval 3 day) as click_date
        union all
        SELECT date_sub(curdate(), interval 4 day) as click_date
        union all
        SELECT date_sub(curdate(), interval 5 day) as click_date
        union all
        SELECT date_sub(curdate(), interval 6 day) as click_date
    ) a left join (
      select date(created_at) as datetime, count(*) as count
      from skins_logs
      group by date(created_at)
    ) b on a.click_date = b.datetime;
  • 相关阅读:
    日报8.18
    Java web项目启动Tomcat报错
    eclipse导入项目报错问题解决方法
    软件架构实践阅读笔记3
    软件架构实践阅读笔记 2
    软件架构实践阅读笔记1
    架构漫谈阅读笔记3
    架构漫谈阅读笔记2
    架构漫谈阅读笔记1
    面向服务的架构SOA
  • 原文地址:https://www.cnblogs.com/ShanCe/p/14154617.html
Copyright © 2020-2023  润新知