1.查询某年的数据

1.1 select * from oa_item_info where created like '2018-%';
1.2 select * from oa_item_info where left(created,4)='2018';
1.3 select * from oa_item_info where year(created)='2018';

今年的数据:

select * from oa_item_info where year(created)=year(now());

上一年的数据:

select * from oa_item_info where year(created)=year(date_sub(now(),interval 1 year));
date_sub()函数:date_sub

mysql求上季度末日期 mysql获取季度_mysql求上季度末日期

mysql求上季度末日期 mysql获取季度_mysql求上季度末日期_02


2.查询某季度的数据

select QUARTER(created)  as quartername ,created from oa_item_info ;

先看一下quarter函数返回的数据,第一列是quartername,第二列是created

1-3月返回1,4-6月返回2,7到9月返回3,10到12月返回4

mysql求上季度末日期 mysql获取季度_数据库_03

并不是搜索本季度的数据:

select * from oa_item_info where QUARTER(created)=QUARTER(now());

这条sql语句返回的是所有年份,当前季度的数据,比如现在是4月,会把所有年份4到6月的数据都检索出来

搜索本季度的数据:

加上本年的限制条件

 select * from oa_item_info where QUARTER(created)=QUARTER(now()) and year(created)=year(now());

3.查询某月的数据

 select month(created) as monthname,created from oa_item_info;

看一下返回数据:第一列是monthname,第二列是created

mysql求上季度末日期 mysql获取季度_数据_04

所有年份2月的数据

 select * from oa_item_info where month(created)=2;

加上年份的限定条件就可以了

4.查询某周的数据

select week(created) as weekname,created from oa_item_info ;

看一下返回数据:第一列是weekname,第二列是created

返回的是一年中的第几周

mysql求上季度末日期 mysql获取季度_mysql求上季度末日期_05

本周的数据:

 select  created   from oa_item_info where week(created)=week(now()) and year(created)=year(now());

select * from oa_item_info where YEARWEEK(date_format(created,'%Y-%m-%d')) = YEARWEEK(now()) ;

看一下week和yearweek的区别:

数据库中加入两条周数一致的日期:

select week('2017-04-20');

 

mysql求上季度末日期 mysql获取季度_mysql_06


select week('2018-04-25');

mysql求上季度末日期 mysql获取季度_时间_07

看一下yearweek的返回值:

select yearweek('2018-04-25');

mysql求上季度末日期 mysql获取季度_数据_08

看一下搜索结果:

select  created   from oa_item_info where week(created)=week(now());

week把两条年份不一样的都搜出来了

mysql求上季度末日期 mysql获取季度_mysql求上季度末日期_09

 select created  from oa_item_info where YEARWEEK(date_format(created,'%Y-%m-%d')) = YEARWEEK(now()) ;

select created  from oa_item_info where YEARWEEK(created) = YEARWEEK(now()) ;

不用date_format函数也可以

yearweek只搜出了今天的

mysql求上季度末日期 mysql获取季度_数据库_10

值得注意的是,他们默认都是从周日开始算的,需要从周一开始计算时,需要加入第二个参数1:week(created,1)

date_format

mysql求上季度末日期 mysql获取季度_时间_11

上一周的数据:

select  *   from oa_item_info where YEARWEEK(date_format(created,'%Y-%m-%d')) = YEARWEEK(now())-1;

5.查询某天的数据

今天的数据:

 select  created from oa_item_info where to_days(created) = to_days(now());

to_days();返回从0年开始的天数;

 select to_days(now())  ;

mysql求上季度末日期 mysql获取季度_时间_12

from_days();根据天数,返回日期;

select from_days(737173)  ;

mysql求上季度末日期 mysql获取季度_mysql求上季度末日期_13

昨天的数据:

这是很多博文的语句,看一下,现在是24号,会搜出今天和昨天数据

 select  created from oa_item_info where to_days(now())-to_days(created)<=1 ;

mysql求上季度末日期 mysql获取季度_mysql_14


 select  created from oa_item_info where to_days(now())-to_days(created)=1 ;

搜出的是昨天的:

mysql求上季度末日期 mysql获取季度_mysql求上季度末日期_15


总结:

1.year(),从时间字段获取年

2.quarter(),从时间字段获取季度

3.month(),从时间字段获取月

4.week(),从时间字段获取周

5.yearweek(),从时间字段获取年和周

6.date_sub(), 从时间字段减去指定时间间隔

7.date_format(),时间格式化

8.to_days(),返回从0年开始的天数;

9.from_days(),根据天数,返回日期;
 

-------------------------------------------------------------

1、DATE() 函数:返回日期或日期时间表达式的日期部分;

2、str_to_date()函数:按照指定日期或时间显示格式 将字符串转换为日期或日期时间类型;

3、date_format()函数:按照指定日期或时间显示格式 输出日期或日期时间;

1、date(datestring)

datestring是合法的日期表达式

如:

SELECT date('2017-02-09 15:25:46.635')
FROM dual;
-->'2017-02-09'

2、date_format(datestring,format)

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

如:

SELECT STR_TO_DATE('2017-02-09 15:25:46.635','%Y-%m-%d')
FROM dual;
-->'2017-02-09'

SELECT STR_TO_DATE('2017-02-09 15:25:46','%Y-%m-%d %H:%i:%s')
FROM DUAL;
-->'2017-02-09 15:25:46'

SELECT STR_TO_DATE('2017-02-09 15:25','%Y-%m-%d %k:%i')
FROM DUAL;
-->'2017-02-09 15:25:00'

3、date_format(datestring,format)

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

如:

当前时间按月-日 时:分:秒显示:

SELECT DATE_FORMAT(NOW(),'%m-%d %h:%i %p')
FROM dual;
-->'02-09 06:00 PM'

当前时间按 年-月-日 时:分:秒 AM/PM显示:

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %h:%i:%s %p')
FROM dual;
-->'2017-02-09 06:00:35'

当前时间按 年 周 日 时:分:秒显示:

SELECT DATE_FORMAT(NOW(),'%Y %b %d %T')
FROM dual;
-->'2017 Feb 09 18:04:13'

可以使用的格式有:

 

格式

描述

%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 位

4.DATEDIFF() 函数

DATEDIFF() 函数返回两个日期之间的时间。

语法


DATEDIFF(datepart,startdate,enddate)


startdate 和 enddate 参数是合法的日期表达式。

datepart 参数可以是下列的值:

datepart

缩写


yy, yyyy

季度

qq, q


mm, m

年中的日

dy, y


dd, d


wk, ww

星期

dw, w

小时

hh

分钟

mi, n


ss, s

毫秒

ms

微妙

mcs

纳秒

ns

例子 1

使用如下 SELECT 语句:


SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate


结果:

DiffDate

1

例子 2

使用如下 SELECT 语句:

SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate


结果:

DiffDate

-1

参考:

https://www.2cto.com/database/201702/596860.html

http://www.w3school.com.cn/sql/func_datediff.asp