MySql日期查询数据的实现

目录
  • 日期函数解析
  • 按天
  • 昨天
  • 指定天数
  • 按周
  • 按月
  • 按季度
  • 按年

日期函数解析

date_format()
格式化日期格式,“date_format(时间戳,时间格式)”

date_sub()
从日期减去指定的时间间隔;函数形式DATE_SUB(date,INTERVAL expr type),date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔,时间间隔参数非常全面,常用的为 年月日时分秒;

//减天数
date_sub(时间,INTERVAL 1 DAY)
//减月份
date_sub(时间,INTERVAL 1 MONTH)

yearweek()
返回指定的日期是哪一年的哪个星期,函数形式为 YEARWEEK(date[,mode]) ,其中date的格式一般为‘年-月-日’,mode为1代表一个星期从星期一开始;

weekday()
接受1个参数,即DATE或DATETIME值,函数形式为WEEKDAY(date);返回一个整数,范围从0到6,表示星期一到星期日,即星期一为0,星期二为1,星期日为6;

period_diff()
返回两个时间相差的月份数,注意它是前一个时间减后一个时间。
注意: period1和period2的格式应相同。

 SELECT PERIOD_DIFF(201710, 201703);

按天

查询某一天
根据某天的日期,查询某天的所有时间段数据
例如,2022-11-01查询2022-11-01 00:00:00——2022-11-01 23:59:59的数据
第一种方法(使用DATE_FORMAT)

SELECT *
FROM test
WHERE DATE_FORMAT(created_date,'%Y-%m-%d')='2022-11-01';

第二种方法(使用between and)

//使用between and传入开始和结束时间点
//获取的都是11-01的
SELECT *
FROM test
WHERE BETWEEN '2022-11-01' AND '2022-11-02';

第三种方法(使用to_days)

SELECT *
FROM test
WHERE to_days(created_date) = to_days('2022-11-01');

第四种方法(使用SUBSTRING)
字符串截取

SELECT *
FROM test
WHERE SUBSTRING(created_date,1,10) = '2022-11-01';

昨天

SELECT *
FROM test
WHERE TO_DAYS(NOW())-TO_DAYS(created_date)=1;

指定天数

例如,最近x天

SELECT *
FROM test
WHERE DATE_SUB(CURDATE(), INTERVAL 2 DAY) <= date(created_date);

按周

当前周数据

SELECT *
FROM test
WHERE YEARWEEK(date_format(created_date,‘%Y-%m-%d'))=YEARWEEK(now());

上周的数据

SELECT *
FROM test
WHERE YEARWEEK(date_format(created_date,‘%Y-%m-%d'))=YEARWEEK(now())-1;

按月

本月

SELECT *
FROM test
WHERE DATE_FORMAT(created_date,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');

上个月

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

距离当前现在x个月

//例如6个月
SELECT *
FROM test
WHERE submittime BETWEEN DATE_SUB(NOW(),interval 6 month) AND NOW();

按季度

本季度数据

SELECT *
FROM test
WHERE QUARTER(created_date)=QUARTER(NOW());

查询上季度数据

SELECT *
FROM test
WHERE QUARTER(created_date)=QUARTER(DATE_SUB(NOW(),interval 1 QUARTER));

按年

本年数据

SELECT *
FROM test
WHERE YEAR(created_date)=YEAR(NOW());

上年数据

SELECT *
FROM test
WHERE YEAR(created_date)=YEAR(DATE_SUB(NOW(),interval 1 year));

到此这篇关于MySql日期查询数据的实现的文章就介绍到这了,更多相关MySql日期查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySql日期查询语句详解

    使用DATE_FORMAT方法SELECT * FROM `ler_items` WHERE DATE_FORMAT(postTime,'%Y-%m')='2013-03'注意:日期一定要用'',否则没有效果其它的一些关于mysql日期查找语句mysql> select date_format(DATE_SUB(CURDATE(), INTERVAL 7 DAY),'%y%m%d');+-------------------–+| date_format(DATE_SUB(CURDATE(),

  • mysql如何查询日期与时间

    前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型概览 MySQL支持的日期和时间类型有 DATETIME.TIMESTAMP.DATE.TIME.YEAR ,几种类型比较如下: 涉及到日期和时间字段类型选择时,根据存储需求选择合适的类型即可. 2.日期和时间相关函数 处理日期和时间字段的函数有很多,有的经常会在查询中使用到,下面介绍下几个相关函数

  • Mysql日期查询的详细介绍

    查询当前日期 SELECT CURRENT_DATE(); SELECT CURDATE(); 查询当前日期和时间 SELECT NOW(); 查询今天的数据 SELECT * FROM `表名` WHERE TO_DAYS(NOW()) = TO_DAYS(`字段`); SELECT * FROM `表名` WHERE TO_DAYS(NOW()) - TO_DAYS(`字段`) = 0; 查询昨天的数据 SELECT * FROM ``表名`` WHERE TO_DAYS(`字段`) = T

  • Mysql根据时间查询日期的优化技巧

    例如查询昨日新注册用户,写法有如下两种: EXPLAIN select * from chess_user u where DATE_FORMAT(u.register_time,'%Y-%m-%d')='2018-01-25'; EXPLAIN select * from chess_user u where u.register_time BETWEEN '2018-01-25 00:00:00' and '2018-01-25 23:59:59'; register_time字段是date

  • Mysql 日期格式化及复杂日期区间查询

    目录 前言 查询使用场景案例 时间区间查询 查询日期今天时间比较数据 常用的周期时间查询 mysql日期时间函数 1 得当前日期+时间(date + time)函数:now() 2 获得当前日期+时间(date + time)函数:sysdate() 3 获得当前时间戳函数:current_timestamp, current_timestamp() 4 获取当前日期(date)函数: curdate() mysql日期时间转换函数 1 日期时间转换字符串格式 2 字符串转换为日期时间 3 (日

  • MySQL查询两个日期之间记录的方法

    网上搜索出来的结果多是下面答案: MySQL中,如何查询两个日期之间的记录,日期所在字段的类型为datetime(0000-00-00 00:00:00) 解决方案: 直接使用><=就可以查询. where createDate<'2003-5-31' and createDate>'2003-2-30'; 其实简单美好的写法可以是这样的 where createDate between'2010-08-01'  and  '2010-08-19' 看完了之后,你是不是觉得后者比较

  • MySQL日期及时间字段的查询

    目录 1.日期和时间类型概览 2.日期和时间相关函数 3.日期和时间字段的规范查询 前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型概览 MySQL支持的日期和时间类型有 DATETIME.TIMESTAMP.DATE.TIME.YEAR , 几种类型比较如下: 涉及到日期和时间字段类型选择时,根据存储需求选择合适的类型即可. 2.日期和时间相关

  • MySql日期查询数据的实现

    目录 日期函数解析 按天 昨天 指定天数 按周 按月 按季度 按年 日期函数解析 date_format()格式化日期格式,“date_format(时间戳,时间格式)” date_sub()从日期减去指定的时间间隔:函数形式DATE_SUB(date,INTERVAL expr type),date 参数是合法的日期表达式.expr 参数是您希望添加的时间间隔,时间间隔参数非常全面,常用的为 年月日时分秒: //减天数 date_sub(时间,INTERVAL 1 DAY) //减月份 dat

  • MySQL 随机查询数据与随机更新数据实现代码

    MySQL随机查询数据 以前在群里讨论过这个问题,比较的有意思.MySQLl的语法真好玩.他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.翻了手册,找到了下面这个语句,可以完成任务了. 复制代码 代码如下: SELECT * FROM table_name ORDER BY rand() LIMIT 5; MySQL的rand()函数在手册里是这么说的: RAND() RAND(N) 返回在范围0到1.0内的随机浮点值.如果一个整数参数N被指定,它被用作种子值. 关于MySQL

  • Mybatis应用mysql存储过程查询数据实例

    1.创建mysql存储过程,这是个复杂查询加上了判断,比较复杂 CREATE PROCEDURE searchAllList ( IN tradingAreaId VARCHAR (50), IN categoryName VARCHAR (100), IN intelligenceSort TINYINT UNSIGNED, IN priceBegin DOUBLE, IN priceEnd DOUBLE, IN commodityName VARCHAR (200), IN flag TIN

  • mysql实现查询数据并根据条件更新到另一张表的方法示例

    本文实例讲述了mysql实现查询数据并根据条件更新到另一张表的方法.分享给大家供大家参考,具体如下: 原本的数据库有3张表 travel_way :旅游线路表,存放线路的具体信息 traveltag :线路标签表,存放线路目的地等信息 tagrelation:标签对应表,存放线路和目的地的对应关系 因为业务逻辑的改变,现在要把它们合并为一张表,把traveltag中的目的地信息插入到travel_way中. 首先获取到所有线路对应的目的地,以线路ID分组,合并目的地到一行,以逗号分隔. 复制代码

  • 使用Python将Mysql的查询数据导出到文件的方法

    mysql官方提供了很多种connector,其中包括python的connector. 下载地址在:http://dev.mysql.com/downloads/connector/python/ 直接安装即可. 在python中: 1. 连接: import mysql.connector cnx = mysql.connector.connect(user='scott', password='tiger', host='127.0.0.1', database='employees')

  • MySQL限制查询和数据排序介绍

    目录 一.限制查询 1.指定从第几行起,返回多少行 2.取最大值 3.取最小值 4.分页 二.数据排序 1.年龄大于10的根据id进行降序排序 2.年龄大于10的按照id进行升序排序 一.限制查询 我们通过limit可以限制返回结果的行数 select * from 表名 limit count; select * from users limit 3; 1.指定从第几行起,返回多少行 select * from 表名 limit start,count; select * from users

  • MySQL学习必备条件查询数据

    目录 一.条件查询 二.比较运算符 三.逻辑运算符 四.范围查询 五.空判断 六.模糊查询 七.优先级 一.条件查询 利用where语句可以对数据进行筛选 select * from 表名 where 条件; 二.比较运算符 ​ 运算符 ​ ​ 描述 ​ ​ 例子 ​ = 等于 where id = 1 \> 大于 where age > 10 < 小于 where age < 10 >= 大于等于 where age >= 10 <= 小于等于 where ag

  • MySQL插入数据与查询数据

    目录 一.插入数据 二.查询数据 一.插入数据 insert into 表名 (列1,...) values(值1,...) 缺省插入: INSERT INTO users (name, birth_date, phone, age) VALUES ('老王', '1990-01-01', '13813145211',30); 缺省插入: INSERT INTO users VALUES (0,'老宋', '1990-01-01', '13823145212',30);# 全列插入 不需要写字段

随机推荐