MySQL 时间条件查询

格式 描述
%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 位


查询当前这周的数据 
SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now()); 

查询上周的数据 
SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1; 

查询当前月份的数据 
select name,submittime from enterprise where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m') 

查询距离当前现在6个月的数据 
select name,submittime from enterprise where submittime between date_sub(now(),interval 6 month) and now(); 

查询上个月的数据 
select name,submittime from enterprise where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m') 

select * from `user` where DATE_FORMAT(pudate,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ; 

select * from user where WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = WEEKOFYEAR(now()) 

select * 
from user 
where MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now()) 

select * 
from [user] 
where YEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = YEAR(now()) 
and MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now()) 

select * 
from [user] 
where pudate between 上月最后一天 
and 下月第一天

=====================================================

SELECT
        a.puid,
        a.gid,
        a.lat,
        a.lon,
        a.address,
        a.endlat,
        a.endlon,
        a.endaddress,
        a.times,
        a.num+b.num AS cnt
        FROM
        (
            SELECT
            <include refid="Base_Column_List"/>,
            COUNT(address) AS num
            FROM
            表
            WHERE
            puid= #{0}
        AND
        DATE_FORMAT(times,'%Y-%m')=DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH),'%Y-%m')
        GROUP BY
            address
        ) AS a,
        (
            SELECT
            endaddress,
            COUNT(endaddress) AS num
            FROM
            表
            WHERE
            puid = #{1}
        AND
        DATE_FORMAT(times,'%Y-%m')=DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH),'%Y-%m')
        GROUP BY
                endaddress
        ) AS b
        WHERE
        a.address = b.endaddress
        HAVING
        cnt>1
        ORDER BY
        cnt DESC
        LIMIT
        5


### MySQL 条件查询的使用方法 #### 1. 使用 `WHERE` 子句进行简单条件查询MySQL 中,`WHERE` 子句用于指定查询条件。基本语法如下: ```sql SELECT 字段名 FROM 表名 WHERE 条件; ``` 例如,如果要从名为 `product` 的表中查找名称包含“霸”字的商品,可以使用以下 SQL 语句[^3]: ```sql SELECT * FROM product WHERE pname LIKE '%霸%'; ``` 这里的 `LIKE` 是一种模式匹配运算符, `%` 表示任意长度的字符序列。 #### 2. 对复杂条件的支持 `WHERE` 子句支持多种比较运算符和逻辑运算符,从而能够构建复杂的查询条件。常见的比较运算符包括 `=`, `<`, `>`, `<=`, `>=`, `!=` 或者 `<>`;而常用的逻辑运算符则有 `AND`, `OR`, 和 `NOT`。 举个例子,假设我们要找出价格大于 100 并且库存小于 50 的产品,则可以写出这样的查询语句: ```sql SELECT * FROM products WHERE price > 100 AND stock < 50; ``` #### 3. 统计函数与 HAVING 子句的应用场景 需要注意的是,在涉及聚合函数(如 COUNT(), SUM() 等)的情况下,不能直接把这些函数放在 `WHERE` 后面作为筛选依据。这是因为 `WHERE` 只能处理单行记录上的表达式计算结果。当需要基于分组后的统计数据做进一步过滤时,应改用 `HAVING` 子句[^4]。 下面是一个利用 `GROUP BY` 结合 `HAVING` 进行高级查询的例子——统计年龄超过 19 岁的学生人数并按不同年龄段分类显示出来: ```sql SELECT age, COUNT(*) AS num_students FROM students GROUP BY age HAVING age > 19; ``` 此例中先按照学生的实际岁数分成若干小组,再挑选那些平均值满足特定标准的小集体予以呈现。 #### 4. 时间日期类型的特殊处理 对于涉及到时间戳或者日期型字段的操作而言,有时可能需要用到专门针对这类数据设计的功能扩展。像引用材料所提及那样,借助于内置工具函数 `PERIOD_DIFF()` 即可轻松完成跨月份间隔判断的任务[^5]: ```sql SELECT * FROM orders WHERE PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'), DATE_FORMAT(order_date,'%Y%m')) = 1; ``` 这段脚本旨在检索距当前时刻正好一个月之前的订单详情列表。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值