#获取返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
select EXTRACT(YEAR_MONTH FROM now()) ;
SELECT EXTRACT(YEAR_MONTH from create_time) from 表名 limit 1;
#DATE_ADD将日期添加指定的时间间隔。 2020-05-09 16:57:24
select DATE_ADD(now(),INTERVAL 1 DAY) ;
#DATE_SUB 将日期减去指定的时间间隔。 2020-05-07 16:58:02
select DATE_SUB(now(),INTERVAL 1 DAY) ;
#DATEDIFF 获取两个日期之间的天数。(只有日期部分参与计算
SELECT DATEDIFF(NOW(),'2020-04-08')
#DATEFORMAT 格式化日期时间 2020-05-08
SELECT DATE_FORMAT(now(),'%Y-%m-%d')
#1,查询今天的绘本
select create_time from 表名 where TO_DAYS(NOW())=TO_DAYS(create_time);
select create_time from 表名 where DATE_FORMAT(CURDATE(),'%Y-%m-%d')=DATE_FORMAT(create_time,'%Y-%m-%d')
#2,昨天
select create_time from 表名 where TO_DAYS(NOW())-1=TO_DAYS(create_time);
#3,昨天以后的数据
select create_time from 表名 where TO_DAYS(NOW())-TO_DAYS(create_time)<=1;
#4,近7天
select create_time from 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(create_time);
#5,最近一个月
select create_time from 表名 where DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(create_time);
#最近一个月,下午1点到2点的绘本出现top10次数
select * from 表名 where DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(create_time) and DATE_FORMAT(create_time,'%H-%i-%s')>='12:00:00' and DATE_FORMAT(create_time,'%H-%i-%s')<='13:00:00' GROUP BY book_id ORDER BY count(book_id) desc ;
#近30天
select create_time from 表名 where DATE_SUB(CURDATE(),INTERVAL 30 DAY)<=DATE(create_time);
select create_time from 表名 where MONTH(create_time)=MONTH(CURDATE());
select create_time from 表名 where DATE_FORMAT(CURDATE(),'%m')=DATE_FORMAT(create_time,'%m')
select create_time from 表名 where MONTH(create_time)=MONTH(CURDATE())-1;
select create_time from 表名 where DATE_FORMAT(CURDATE(), '%Y%m')-1=DATE_FORMAT(create_time,'%Y%m')
SELECT create_time FROM 表名 WHERE PERIOD_DIFF(DATE_FORMAT(CURDATE( ),'%Y%m' ),DATE_FORMAT(create_time,'%Y%m' )) =1;
#查询本季度数据
select create_time from 表名 where QUARTER(create_time)=QUARTER(CURDATE());
#查询上季度数据
select create_time from 表名 where QUARTER(create_time)=QUARTER(CURDATE())-1;
select create_time from 表名 where QUARTER(create_time)=QUARTER(date_sub(CURDATE(),INTERVAL 1 quarter));
#查询本年数据
select create_time from 表名 where YEAR(create_time)=YEAR(CURDATE());
#查询上年数据
select create_time from 表名 where YEAR(create_time)=YEAR(CURDATE())-1;
select create_time from 表名 where YEAR(create_time)=YEAR(date_sub(CURDATE(),INTERVAL 1 YEAR));
#查询当前这周的数据
select create_time from 表名 where WEEK(create_time)=WEEK(CURDATE());
#查询上周的数据
select create_time from 表名 where WEEK(create_time)=WEEK(CURDATE())-1;
select create_time from 表名 where WEEK(create_time)=WEEK(date_sub(CURDATE(),INTERVAL 1 WEEK));
%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 位
MICROSECOND、
SECOND、MINUTE、
HOUR、DAY、WEEK、MONTH、
QUARTER、YEAR、SECOND_MICROSECOND、
MINUTE_MICROSECOND、MINUTE_SECOND、
HOUR_MICROSECOND、HOUR_SECOND、
HOUR_MINUTE、DAY_MICROSECOND、
DAY_SECOND、DAY_MINUTE、
DAY_HOUR、YEAR_MONTH
#mysql关于查询时间的语法#获取当前日期和时间的函数。2020-05-08 16:42:36select NOW();#获取当前的日期 2020-05-08select CURDATE();#获取当前时间 16:42:23SELECT CURTIME();# 2020-05-08SELECT DATE(now()) from now();SELECT DATE(create_time) from t_book limit 1;#获取返...
本文实例讲述了PHP+
MySQL
实现对一
段时间
内每天数据统计优化操作。分享给大家供大家参考,具体如下:
在互联网项目中,对项目的数据分析必不可少。通常会统计某一
段时间
内每天数据总计变化趋势调整营销策略。下面来看以下案例。
在电商平台中通常会有订单表,
记录
所有订单信息。现在我们需要统计某个月份每天订单数及销售金额数据从而绘制出如下统计图,进行数据分析。
订单表数据结构如下:
order_id
order_sn
total_price
enterdate
mysql
备份同库中一张表的历史
记录
insert into …select
如今有个这么一个需求。
mysql
中有个表。数据增长的非常快。可是呢这个数据有效期也就是1个月,
一个月
曾经的
记录
不太重要了,可是又不能删除。为了保证这个表的
查询
速度,须要一个简单的备份表,把数据倒进去。
于是我写了一个小脚本,用来做定时任务。把这个表某
段时间
的数据备份到备份表中。核心就是个简单的sql。
下面以新表(test_table_new)和旧表(test_table_old)为例
CREATE TABLE IF NOT EXISTS `test_table_new` (
`id` int(11)
第一步:
查询
一定范围内的数据、数量
查询
最
近
一天的数据:
select * from table where to_days(column_time) = to_days(now());
select * from table where date(column_time) = curdate();
查询
最
近
一周的数据
select * from "table" where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date("column_time");
很多情况下,为配合前端画表格,后台需要从数据库中取出连续的数据,比如最
近
一周或者最
近
一个月
的,这就要求数据不能断,必须是时间连续的,好处理
我使用的是
mysql
数据库,表结构如下:
t_temp
tt_id
tt_date
2019-01-19
2019-01-19
2019-01-22
2019-01-23
开始时我的SQL...
一个月
到未来的活动数据
SELECT * from activity_info t where t.valid='Y' and t.act_date > (SELECT DATE_ADD(now(),INTERVAL -1 MONTH));
一个月
内到此刻的活动数据
SELECT * f...
select fzrq
from dj_djb
where FZRQ >= TO_DATE('2019-01-01 00:00:00','YYYY-MM-DD hh24:mi:ss')
AND FZRQ <= TO_DATE('2019-02-28 23:59:59','YYYY-MM-DD hh24:mi:s...
where time between
to_date('2022-01-01 00:00:00','YYYY-mm-dd hh24:mi:ss') and
to_date('2022-02-28 23:59:59','YYYY-mm-dd hh24:mi:ss') and
to_char(time,'hh24:mi:ss') between '00:00:00' and '00:59:59'
这样就能
查询
时间段内