zoukankan      html  css  js  c++  java
  • MySQL 查询当天、本周,本月、上一个月的数据

    mysql查询当天的所有信息:

    SELECT * FROM 表名 WHERE year(时间字段名)=year(now()) and month(时间字段名) = month(now()) and day(时间字段名) = day(now());

    这个有一些繁琐,还有简单的写法:

    SELECT * FROM 表名 WHERE date(时间字段名) = curdate();

    另一种写法没测试过

    查询当天的记录

    SELECT * FROM 表名 WHERE TO_DAYS(时间字段名) = TO_DAYS(NOW());

    date()函数获取日期部分, 扔掉时间部分,然后与当前日期比较即可

    补充:本周、上周、本月、上个月份的数据
    查询当前这周的数据

    SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now());

    查询上周的数据

    SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now())-1;

    查询当前月份的数据

    SELECT * FROM 表名 WHERE date_format(时间字段名,'%Y-%m') = date_format(now(),'%Y-%m')

    查询距离当前现在6个月的数据

    SELECT * FROM 表名 WHERE 时间字段名 between date_sub(now(),interval 6 month) and now();

    查询上个月的数据

    复制代码
    SELECT * FROM 表名 WHERE date_format(时间字段名,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH), '%Y-%m');
    SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ; SELECT * FROM 表名 WHERE WEEKOFYEAR(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = WEEKOFYEAR(now()); SELECT * FROM 表名 WHERE MONTH(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = MONTH(now()); SELECT * FROM 表名 WHERE YEAR(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = YEAR(now()) and MONTH(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = MONTH(now()); SELECT * FROM 表名 WHERE 时间字段名 between 上月最后一天 and 下月第一天;
    复制代码

    mysql查询多少秒内的数据

    SELECT count( * ) AS c, sum( if( logusertype = 2, logusertype, 0 ) ) / 2 AS a, sum( if( logusertype = 3, logusertype, 0 ) ) /3 AS b
    FROM testlog WHERE UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP( logendtime )<=30

    查询30秒内记录的总数,loguser等于2的记录的总数和,和 loguser等于3的记录的总数.

    if( logusertype = 2, logusertype, 0 ) 如果logusetype等于2 就在logusertype上累加,否则加0。
    sum( if( logusertype = 2, logusertype, 0 ) ) 把logusertype都累加起来。
    sum( if( logusertype = 2, logusertype, 0 ) )  / 2 AS a, 除以2是统计个数。
    UNIX_TIMESTAMP(NOW())计算当前时间的秒数,
    UNIX_TIMESTAMP(logendtime)计算logendtime的秒数

    今天

    SELECT * FROM 表名 WHERE to_days(时间字段名) = to_days(now());

    昨天

    SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段名) <= 1 AND TO_DAYS(NOW()) - TO_DAYS(时间字段名) > 0;

    近7天

    SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名);

    查询当前这周的数据

    SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名, '%Y-%m-%d')) = YEARWEEK(now());

    查询上周的数据

    SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名, '%Y-%m-%d')) = YEARWEEK(now()) - 1;

    近30天

    SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名);

    查询当前月份的数据 

    SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名, '%Y-%m') = DATE_FORMAT(now(),'%Y-%m');
    SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m' );

    上一月数据

    SELECT * FROM 表名 WHERE PERIOD_DIFF(date_format(now( ), '%Y%m') , date_format(时间字段名, '%Y%m')) = 1;

    查询本季度数据

    SELECT * FROM 表名 WHERE QUARTER(时间字段名) = QUARTER(now());

    查询上季度数据

    SELECT * FROM 表名 WHERE QUARTER(时间字段名)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));

    查询本年数据

    SELECT * FROM 表名 WHERE YEAR(时间字段名)=YEAR(NOW());

    查询上年数据

    SELECT * FROM 表名 WHERE year(时间字段名)=year(date_sub(now(),interval 1 year));

    查询距离当前现在6个月的数据

    SELECT * FROM 表名 WHERE 时间字段名 between date_sub(now(), interval 6 month) and now();

    DATE_FORMAT(date,format)

    date 参数是合法的日期。format 规定日期/时间的输出格式。

    可以使用的格式有:

    格式描述
    %a 缩写星期名
    %b 缩写月名
    %c 月,数值
    %D 带有英文前缀的月中的天
    %d 月的天,数值(00-31)
    %e 月的天,数值(0-31)
    %f 微秒
    %H 小时 (00-23)
    %h 小时 (01-12)
    %I 小时 (01-12)
    %i 分钟,数值(00-59)
    %j 年的天 (001-366)
    %k 小时 (0-23)
    %l 小时 (1-12)
    %M 月名
    %m 月,数值(00-12)
    %p AM 或 PM
    %r 时间,12-小时(hh:mm:ss AM 或 PM)
    %S 秒(00-59)
    %s 秒(00-59)
    %T 时间, 24-小时 (hh:mm:ss)
    %U 周 (00-53) 星期日是一周的第一天
    %u 周 (00-53) 星期一是一周的第一天
    %V 周 (01-53) 星期日是一周的第一天,与 %X 使用
    %v 周 (01-53) 星期一是一周的第一天,与 %x 使用
    %W 星期名
    %w 周的天 (0=星期日, 6=星期六)
    %X 年,其中的星期日是周的第一天,4 位,与 %V 使用
    %x 年,其中的星期一是周的第一天,4 位,与 %v 使用
    %Y 年,4 位
    %y 年,2 位

    实例

    下面的脚本使用 DATE_FORMAT() 函数来显示不同的格式。我们使用 NOW() 来获得当前的日期/时间:

    DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
    DATE_FORMAT(NOW(),'%m-%d-%Y')
    DATE_FORMAT(NOW(),'%d %b %y')
    DATE_FORMAT(NOW(),'%d %b %Y %T:%f')
    

    结果类似:

    Dec 29 2008 11:45 PM
    12-29-2008
    29 Dec 08
    29 Dec 2008 16:25:46.635
  • 相关阅读:
    leetcode 347. Top K Frequent Elements
    581. Shortest Unsorted Continuous Subarray
    leetcode 3. Longest Substring Without Repeating Characters
    leetcode 217. Contains Duplicate、219. Contains Duplicate II、220. Contains Duplicate、287. Find the Duplicate Number 、442. Find All Duplicates in an Array 、448. Find All Numbers Disappeared in an Array
    leetcode 461. Hamming Distance
    leetcode 19. Remove Nth Node From End of List
    leetcode 100. Same Tree、101. Symmetric Tree
    leetcode 171. Excel Sheet Column Number
    leetcode 242. Valid Anagram
    leetcode 326. Power of Three
  • 原文地址:https://www.cnblogs.com/zhangrongfei/p/12900620.html
Copyright © 2011-2022 走看看