添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

###方法一:直接拿字段比较

  • (1)以下这两种方式最终效果一样
SELECT bb.borrow_no,bb.create_time FROM borrow bb WHERE bb.create_time>='2018-09-11 00:00:00';
SELECT bb.borrow_no,bb.create_time FROM borrow bb WHERE bb.create_time>='2018-09-11';
borrow_nocreate_time
HLW-10000016216588262018-09-11 13:39:27
HLW-10000015877891962018-09-11 14:36:02
HLW-10000008183677932018-09-11 14:55:53
  • (2)如何查询某一天(2018-09-10)
SELECT bb.borrow_no,bb.create_time FROM borrow bb WHERE bb.create_time>='2018-09-10' and bb.create_time <='2018-09-11';

错误方法:

SELECT bb.borrow_no,bb.create_time FROM borrow bb WHERE bb.create_time='2018-09-10';
 

直接用时间字段去比较的时候,等号后面需要精确到原始时间的时分秒,2018-09-10 不能代表 2018-09-10 12:22:33

###方法二:查询最近几天的信息

程序中,如果查询最近几天的记录,就需要获取当前日期的时间,然后再动态生成最终结果,如果再把sql的时间都写死,最终就无法达到需求。

(1)函数now():

select NOW();
NOW()
2018-09-11 17:53:06

(2)函数CURRENT_DATE():

select CURRENT_DATE();
NOW()
2018-09-11

(3) 查询当日的记录(以下两种方式结果相同)

SELECT * FROM borrow bb WHERE DATE_FORMAT(bb.create_time, '%Y%m%d')=DATE_FORMAT(CURRENT_DATE(), '%Y%m%d' );
SELECT * FROM borrow bb WHERE TO_DAYS(bb.create_time)=TO_DAYS(now());
 

如上两种方式,都使用的等号=准确的表达了想要查询的时间段

(4)查询昨日的记录

SELECT * FROM borrow bb WHERE TO_DAYS( NOW( ) ) - TO_DAYS( bb.create_time) =1;

(5)查询近7天的数据(以下两种方式结果相同)

SELECT * FROM borrow bb WHERE TO_DAYS( NOW( ) ) - TO_DAYS( bb.create_time) <= 7;
SELECT bb.borrow_no,bb.create_time FROM borrow bb where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bb.create_time);

(6)查询本月的数据

SELECT * FROM borrow bb WHERE DATE_FORMAT( bb.create_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' );

(7)查询上个月的数据

SELECT * FROM borrow bb WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( bb.create_time, '%Y%m' ) ) =1
 

有关时间的转换,还可以参考其他博客:
http://www.cnblogs.com/ggjucheng/p/3352280.html
https://blog.csdn.net/Yuan52007298/article/details/81584716

时间格式为2008-06-16 查询出当天数据: SELECT * FROM `table` WHERE date(时间字段) = curdate(); 查询出当月字段: SELECT * FROM `table` WHERE month( 时间字段) = month( now( ) ) ; 时间格式为1219876…… UNIX时间,只要应用“FROM_UNIXTIME( )”函数 例如查询当月: SELECT * FROM `table` WHERE month( from_unixtime( reg_time ) ) = month( now( ) ) ; 查询上一个月的呢?变通一下! 2. 查询本周 SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(时间字段,'%Y-%m-%d')) = YEARWEEK(NOW()); 3. 查询本月 SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m'); 4. 查询本季度 SELECT * FROM 表名 WHERE QUARTER(时间 参照文章( mysql查询时间段内数据)进行了操作。        先来建表语句:[sql] view plain copySET FOREIGN_KEY_CHECKS=0;    -- ----------------------------  -- Table structure for t_user  -- ----------------------------  DROP TABLE I... MySQL如何通过输入字符串对日期进行模糊查询MySQL 输入字符串对日期进行模糊查询——LikeMySQL 查询某个日期区间段的行数据——Between ... AndMySQL 输入字符串对日期进行精确查询——datediff()函数MySQL 查询当日的记录MySQL 查询昨天的记录MySQL 查询近7天的数据MySQL 查询本月的数据MySQL 查询上个月的数据 MySQL 输入字符串对日期进行模糊查询——Like select * from 表名 where date_format(tim DATE_SUB函数在当前时间一定的时间date合法日期,可以是当前时间now()expr希望减去的时间,整数unit减去时间的单位,如day,week,month,year实例u_user表(1)、前一周的数据当前时间sql结果另一种sql写法(2)、前三个月的数据sql结果(3)、前一年的数据sql。... I have a Mysql Table that is used for a log file on the that table there is a field called 'log_date' And it stores the date in the following format( %Y-%m-%d %H:%i.%s ).On the DB the dates look like ... 要求学校内各同学每天起床的平均时间,所以我们需要筛选出某学期内早上五点~早上十点之间的全部数据。 之前如果是使用SQL Server,则可以使用CONVERT函数,具体代码如下: select * from v_come_out_record t where t.co_time between '2020-6-27' and '2020-11-27' and convert(varchar(5),t.co_time,114) between '05:00' and '10:00' 数据库保存的时间是字符串格式,有的有时分秒有的没有。页面传过来的是有时分秒的。 如果筛选的开始时间事2月1日 00:00:00 ,而数据库的数据有一条事2月1日的,那么这条数据库的数据事筛选不到的。 在where后边处理数据在进行大小对比。 SELECT * FROM pol_policy WHERE STR_TO_DATE(app_date,’%Y-%m-%d %H:%i:%s’) >=‘2021-01-31 10:00:00’ AND STR_TO_DATE(app_da