zoukankan      html  css  js  c++  java
  • 关于时间问题

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

    部分函数介绍

    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;
  • 相关阅读:
    手把手教你写vue插件并发布(一)
    npm 换源
    ajax上传文件显示进度
    angularjs的表单验证
    利用公钥认证登录远程服务器
    centos 搭建 leanote
    读书笔记-JavaScript高级程序设计(1)
    C++读写TXT文件中的string或者int型数据以及string流的用法
    不相交集ADT--链表实现
    不相交集ADT--数组实现
  • 原文地址:https://www.cnblogs.com/ShanCe/p/14154617.html
Copyright © 2011-2022 走看看