mysql-时间函数

mysql(22/2/23)

一.日期时间函数

//返回当前时间
SELECT CURRENT_TIME()FROM DUAL
//返回当前日期
SELECT CURRENT_DATE()FROM DUAL
SELECT NOW()FROM DUAL
//返回当前时间戳
SELECT CURRENT_TIMESTAMP()FROM DUAL

实例

create table mes(
	id int,
	content varchar(30),
	send_time datetime
	);
	
select * from `mes`

insert into mes
	values(1,'北京新闻',current_timestamp()
	);

返回datetime类型的date

SELECT DATE(send_time) FROM mes;

DATE_ADD(time,INTERVAL add_time time_type)查询time加上add_time的总和
年月日时分秒
INTERVAL add_time YEAR
INTERVAL add_time MONTH
INTERVAL add_time DATE
INTERVAL add_time HOUR
INTERVAL add_time MINUTE
INTERVAL add_time SECOND
DATE_SUB(time,INTERVAL add_time time_type)查询time减去add_time的总和
查询时间10分钟内的信息

SELECT *FROM mes WHERE DATE_ADD(send_time,INTERVAL 10 MINUTE) >=NOW();

datedeft(date1,date2)查询date1和date2的相差天数所以必须是date单位date1-date2

SELECT DATEDIFF(DATE(send_time),DATE(send_time) ) FROM mes 

!!!问你是1986-11-11出生你能活到80岁你能活多少天

SELECT ABS(DATEDIFF('1986-11-11',DATE_ADD('1986-11-11',INTERVAL 80 YEAR) )) FROM mes 

时间相差TIMEDIFF(time1,time2) —time1-time2

SELECT TIMEDIFF('11:10:10','10:10:9') FROM DUAL

daytime的年月日时分秒拆解

SELECT NOW() ,YEAR(NOW()), MONTH(NOW()),DAY(NOW()),HOUR(NOW()),MINUTE(NOW()),
SECOND(NOW())FROM DUAL

unix_timestamp()返回1970-1-1 00:00:00到现在的秒数

SELECT UNIX_TIMESTAMP() FROM DUAL

将一个Unix_timestamp()的数据或者一个秒数据转化为指定格式

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%y-%m-%d %H:%i:%s')
//字母大小会影响结果M大写是英文月小写是中文
//y小写是后两位大写是所有显示
//H大写是24小时小写是12小时
select from_unixtime('1644564','%y-%m-%d %H:%i:%s')
*在实际开发中经常用int来保存一个UNix_timestamp的时间戳用fron_unixtime转换*

加密函数和系统函数

*user()可以查看登陆到mysql有那些用户以及登陆的ip*
SELECT USER() FROM `students`
#查询当前使用数据库名称
SELECT DATABASE() FROM `students`

#MD5(str)为用户算出一个str 加密的32位字符串

#一个安全的密码加密函数
SELECT MD5('我吃苹果不吃梨')FROM DUAL
CREATE TABLE `employee1`(id INT,
		`name` VARCHAR(8) NOT NULL DEFAULT '',
		pwd CHAR(32)NOT NULL DEFAULT '')
SELECT * FROM `employee1`
INSERT INTO `employee1` VALUES(1,'mark',MD5('woaini'))	
SELECT * FROM `employee1` WHERE `name`='hsp' AND `pwd`=MD5('woaini')

#password(str)也是一种加密函数而且是mysql的加密方式


流程控制函数

#IF(e1,e2,e3)如果e1是真的返回e2否则返回e3

SELECT IF(TRUE,'北京','上海')

#IFNULL(e1,e2)如果e1是空返回e2不为空就是e1

SELECT IFNULL(NULL,'a') FROM DUAL

#CASE WHEN A THEN B WHEN C THEN D ELSE E END如A是真返回B
#A假看C真是D不真就是E

SELECT CASE 
	WHEN TRUE THEN 'b' 
	WHEN FALSE THEN 'c'
	ELSE 'a' END

#判断是否为空用 is null
#is not null

SELECT 	`name`,(SELECT CASE
		WHEN `bumen` ='三国' THEN '军人'
		WHEN `bumen`='水浒' THEN '好汉'
		ELSE '老师' END)AS '格局'
	FROM `students` 

sql表的查询----加强

在mysql中日期是可以直接比较的

where date >'1998-10-18'
//模糊查询
like  '王%'  //%代表多个字符
like '王_'    _代表一个字符
//判断是否为空用
is null
判断等于字符串用
=

order by排序默认(asc)升序后加desc降序 – 方向为自伤向下
排序再排序先按部门升序再按工资降序

select * from  `emp` order by `deptno` asc  ,sal  desc;

分页查询

从start+1行显示rows行

SELECT * FROM `students` ORDER BY id LIMIT START,ROWS;第二页是为start+rows  rows不变

多表查询

#统计各个部门的平均工资并是大于1000的平均工资按照从高到低排列并
#取出前两行
select deptno ,avg(salary) from `ems` 
	group by deptno having avg(salary) > '1000'
	order by avg(salary) desc
	limit 0 ,2

多子句查询

所有的过滤选择都是针对行的选好行后才取显示select后面的列数据,所以sql是从后向前执行的思路
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值