033-数据处理函数之获取日期时间
- now():获取的是执行select语句的时刻。
- sysdate():获取的是执行sysdate()函数的时刻。
select now(), sleep(2), sysdate();
获取当前日期
select curdate();
select current_date();
select current_date;
获取当前时间
select curtime();
select current_time();
select current_time;
获取单独的年、月、日、时、分、秒
select year(now());
select month(now());
034-获取间隔日期时间
date_add函数的语法格式:date_add(日期, interval expr 单位)
select date_add('2024-6-11', interval 7 month);
select date_add('2024-6-11 16:21:59', interval 9 minute);
如果为负数,效果和date_sub函数相同
select date_add('2024-6-11 16:21:59', interval -9 minute);
select date_sub('2024-6-11 16:21:59', interval 9 minute);
单位:
-
year:年
-
month:月
-
day:日
-
hour:时
-
minute:分
-
second:秒
-
microsecond:微秒(1秒等于1000毫秒,1毫秒等于1000微秒)
-
week:周
-
quarter:季度
另外,单位也可以采用复合型单位,例如: -
SECOND_MICROSECOND
-
MINUTE_MICROSECOND
-
MINUTE_SECOND:几分几秒之后
-
HOUR_MICROSECOND
-
HOUR_SECOND
-
HOUR_MINUTE:几小时几分之后
-
DAY_MICROSECOND
-
DAY_SECOND
-
DAY_MINUTE
-
DAY_HOUR:几天几小时之后
-
YEAR_MONTH:几年几个月之后
select date_add('2024-6-11', interval '3, 2' year_month);
035-日期格式化
date_format日期格式化函数
- %Y:四位年份
- %y:两位年份
- %m:月份(1…12)
- %d:日(1…30)
- %H:小时(0…23)
- %i:分(0…59)
- %s:秒(0…59)
select date_format(now(), '%H:%i:%s %Y-%m-%d');
select ename, sal, date_format(hiredate, '%y-%m/%d') hiredate from emp;
036-字符串转日期
str_to_date函数
insert into t_student(name, birth) values('cupid0', '1999-10-18');
insert into t_student(name, birth) values('cupid1', str_to_date('1999-10-18', '%Y-%m-%d'));
如果日期格式符合以下的几种格式,mysql都会自动进行类型转换的。
dayofweek、dayofmonth、dayofyear函数
周日是第一天
select dayofweek(now());
select dayofmonth(now());
select dayofyear(now());
last_day函数
获取给定日期所在月的最后一天的日期
select last_day(now());
datediff函数 timediff函数
select datediff('2024-06-19 20:10:30', '2024-6-11 17:22:22');
select timediff('2024-06-11 20:10:30', '2024-6-11 17:22:22');
039-if函数
SELECT IF(500<1000, "YES", "NO");
如果工资高于3000,则输出1,反之则输出0
select ename, sal, if(sal>=3000,1, 0) from emp;
如果名字是SMITH的,工资上调10%,其他员工工资正常显示
select ename, sal, if(ename='SMITH', sal*1.1, sal) from emp;
工作岗位是MANAGER的工资上调10%,是SALESMAN的工资上调20%,其他岗位工资正常
select job, sal, if(job='SALESMAN', sal*1.2, if(job='MANAGER', sal*1.1, sal)) newsal from emp;
上面这个需求也可以使用:case… when… then… when… then… else… end来完成
select ename,job,sal,(case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.1 else sal end) newsal from emp;
040-类型转换与加密
cast函数
cast函数用于将值从一种数据类型转换为表达式中指定的另一种数据类型
语法:cast(值 as 数据类型)
例如:cast(‘2020-10-11’ as date),表示将字符串’2020-10-11’转换成日期date类型。
在使用cast函数时,可用的数据类型包括:
- date:日期类型
- time:时间类型
- datetime:日期时间类型
- signed:有符号的int类型(有符号指的是正数负数)
- char:定长字符串类型
- decimal:浮点型
select cast('2024-6-11 18:09:22'as date);
select cast('2024-6-11 18:09:22'as time);
select cast('2024-6-11 18:09:22'as datetime);
select cast('-5.3' as signed);
select cast(123.456 as char(4));
decimal(有效数字个数,保留几位小数)
select cast(123.456 as decimal(4, 1));
select cast(123.456 as decimal(5, 1));
select cast(123.456 as decimal(3, 1));
select cast(123.456 as decimal(2, 1));
加密函数
md5函数,可以将给定的字符串经过md5算法进行加密处理,字符串经过加密之后会生成一个固定长度32位的字符串(16进制),md5加密之后的密文通常是不能解密的
select md5('cupid');