mysql基础(6)

内容一: 时间函数(数据分析也是时间)

概念:日期(date类型 ----年月日 )   时间(time---时分秒)

日期时间类型(datetime  年月日  时分秒)

注意日期时间格式  %Y 年  %m月 %d 日  %H 小时  %i 分钟  %s 秒

分类:

  1. 日期时间获取函数
  2. 日期时间格式转换函数
  3. 日期时间计算函数

-- 1.日期时间获取函数

select now(),curdate();获取当前时间 +当前日期

select date(now()); 获取当前的日期

select time(now()); 获取当前的时间

单个获取年月日 时分秒

select year(now()),month(now()),day(now()),

hour(now()),minute(now()),second(now());

获取当前时刻所属的周数

select WEEKOFYEAR(now());

获取 当前的天数  0~ 2020-9-29   天

select TO_DAYS('2020-9-29');

获取今天是星期几==》注意  老外  星期天 1  星期一2

select DAYOFWEEK(now());

计算日子所属的季度  

select   quarter("2019-09-01")  ;

2.日期时间格式转换函数

注意日期时间格式  %Y 年  %m月 %d 日  %H 小时  %i 分钟  %s 秒

日期转换函数  DATE_FORMAT(日期时间,格式)

select DATE_FORMAT("2019-1-31 22:37:22","%Y-%m-%d %H-%i-%s") ;

3日期时间计算函数

时间可以  向后偏移  date_add  +向前  date_sub

select  "2019-01-01 10:06:32",

date_add("2019-01-01 10:06:32",INTERVAL 7 year) as "往后推年份",

date_add("2019-01-01 10:06:32",INTERVAL 7 month) as "往后推月份",

date_add("2019-01-01 10:06:32",INTERVAL 7 day) as "往后推日子",

date_add("2019-01-01 10:06:32",INTERVAL -7 year) as "往前推年份",

date_add("2019-01-01 10:06:32",INTERVAL -7 month) as "往前推月份",

date_add("2019-01-01 10:06:32",INTERVAL -7 day) as "往前推日子",

date_add("2019-01-01 10:06:32",INTERVAL 7 hour) as "往后推小时",

date_add("2019-01-01 10:06:32",INTERVAL 7 minute) as "往后推分钟",

date_add("2019-01-01 10:06:32",INTERVAL 7 SECOND) as "往后推秒数"

date_add 和date_sub  效果相反

select  "2019-01-01 10:06:32",

date_sub("2019-01-01 10:06:32",INTERVAL 7 year) as "往前推年份",

date_sub("2019-01-01 10:06:32",INTERVAL 7 month) as "往前推月份",

date_sub("2019-01-01 10:06:32",INTERVAL 7 day) as "往前推日子",

date_sub("2019-01-01 10:06:32",INTERVAL -7 year) as "往后推年份",

date_sub("2019-01-01 10:06:32",INTERVAL -7 month) as "往后推月份",

date_sub("2019-01-01 10:06:32",INTERVAL -7 day) as "往后推日子",

date_sub("2019-01-01 10:06:32",INTERVAL 7 hour) as "往前推小时",

date_sub("2019-01-01 10:06:32",INTERVAL 7 minute) as "往前推分钟",

date_sub("2019-01-01 10:06:32",INTERVAL 7 SECOND) as "往前推秒数"

这些函数不要求记住这些函数,但是会查询  函数大全

接下来我们创建一个业务表

CREATE  table jwhuaweitest
(
id int(11)  PRIMARY KEY  AUTO_INCREMENT, 
brand_name varchar(100) DEFAULT NULL COMMENT '品牌名称', 
model_name varchar(100) DEFAULT NULL COMMENT '机型名称', 
jwdate   date DEFAULT NULL COMMENT '日期',
sale_num int(11) DEFAULT 0 COMMENT '销量', 
insert_time  datetime  DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '插入时间'
)
ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COMMENT='TOP机型,品牌表'; 

然后我们插入数据

insert into jwhuaweitest(brand_name,model_name,jwdate,sale_num,insert_time)
VALUES
('华为','荣耀','2020-1-30',30,'2020-2-11 10:02:11'),
('华为','Nova','2019-12-19',30,'2020-2-12 10:02:11'),
('华为','mate30 pro','2020-3-30',30,'2020-2-11 10:03:11'),
('小米','mix','2017-1-30',30,'2020-2-11 10:02:11'),
('苹果','iPhone 11 pro max','2020-1-30',30,'2020-2-11 14:02:11'),
('小米','9','2020-01-18',30,'2020-03-11 22:02:11'),
('华为','matpad pro','2020-01-30',30,'2020-03-11 10:02:11'),
('华为','matpad pro','2020-9-26',30,'2020-03-11 10:02:11'),
('华为','matpad pro','2020-9-25',30,'2020-03-11 10:02:11'),
('华为','matpad pro','2020-9-20',30,'2020-03-11 10:02:11'),
('华为','matpad pro','2020-8-30',30,'2020-03-11 10:02:11'),
('华为','matpad pro',now(),30,'2020-03-11 10:02:11'),
('华为','matpad pro','2020-3-30',30,'2020-03-11 10:02:11')
;

如图所示

 

 (学什么?时间写法(面试重点):比如: 本周  上一周  本月 上月 )

计算  两个日期内容  天数

select DATEDIFF("2019-01-07","2020-01-07")

获取指定日期数据

例子1: 查询 日期 是 20200919的数据

select * from jwhuaweitest    where

date_format(jwdate,"%Y%m%d")='20200919';

例子2: 查询 日期 是 2019的数据

select * from jwhuaweitest    where

date_format(jwdate,"%Y")='2019';

获取一段时间内(一段日子 一段月份 一段年  一段小时 一段分钟 一段秒)的数据

例子3 获取2020年 1月份  到  3月份数据

select * from jwhuaweitest    where

date_format(jwdate,"%Y%m")

between

'202001'

AND

'202003';

最后大家按照我建的表多试试,多练练。不需要全部记住,但是基本的还是要记住的哈!!

 

 

 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vlepro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值