写点什么

RUOYI 框架教程 15|若依框架中 Mysql 操作 | 日期处理

发布于: 刚刚

 若依教程独家分享!点赞+关注,一起从「蒟蒻」变成「大佬」~


小伙伴们,好久不见~ 

众所周知,数据库中日期处理相对较多,那么我们这次来分享一些常用的 SQL 日期处理;

补充关于字符串查找易错问题


01 代码实现


-- 常用的日期SELECT NOW(),CURDATE(),CURTIME();
-- 常用的 datetime 转 date time NOW(), DATE(NOW()), TIME (NOW()), CONCAT(DATE(NOW()), ' ', TIME (NOW())); -- 常用的str 转 datetime date time str_to_date('2019-04-25 08:50:00', '%Y-%m-%d %H:%i:%s'), DATE('2019-04-25 08:50:00'), TIME ('2019-04-25 08:50:00'), str_to_date('2019-04-25 08:50:00', '%Y-%m-%d %T'), -- 日期比较 NOW() = CONCAT(DATE(NOW()), ' ', TIME (NOW())), DATE(NOW()) = '2019-04-25', NOW() = DATE(NOW()), NOW() = TIME (NOW());
-- 获取当前时间的函数select CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME; -- 当前时间select CURRENT_TIMESTAMP(), CURRENT_DATE(), CURRENT_TIME(), CURDATE(), CURTIME(); -- 当前时间select now(), sysdate(), SLEEP(3), now(), sysdate(); -- 当前时间select UTC_TIMESTAMP(), UTC_DATE(), UTC_TIME(); -- UTC时间select UNIX_TIMESTAMP(), UNIX_TIMESTAMP(now());-- 函数返回连接当前时区内的值(时间戳)select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d %H:%i:%s'); -- 时间戳格式化select DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s'); -- 时间格式化
-- 补充日期操作DATE_ADD(date,INTERVAL expr type);DATE_SUB(date,INTERVAL expr type);/* 对日期进行 加减(两个函数记一个即可)type取值:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、YEAR_MONTH、DAY_SECOND 等等*/
-- 加1天select DATE_ADD(now(),INTERVAL 1 DAY), DATE_SUB(now(),INTERVAL -1 DAY);-- 复合型:加1年1月select DATE_ADD(now(),INTERVAL '1 1' YEAR_MONTH), DATE_SUB(now(),INTERVAL '-1 -1' YEAR_MONTH);-- 加1天2时3分4秒select DATE_ADD('2020-12-23 00:00:00',INTERVAL '1 2:3:4' DAY_SECOND),DATE_SUB('2020-12-23 00:00:00',INTERVAL '-1 -2:-3:-4' DAY_SECOND);
/* 获取两个日期之间的差值(datetime_expr2-datetime_expr1的值)TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)unit:差值的单位,取值:FRAC_SECOND(低版本不支持)、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER或YEAR*/-- 查询两个日期间的差值(单位秒)select TIMESTAMPDIFF(Day ,'2021-12-01','2021-12-02');
select DATE_FORMAT('Mon Jun 11 00:00:00 CST 2018','%Y-%m-%d %H:%i:%s');
复制代码

02 补充关于字符串查找易错问题

关于字符串查找易错问题,主要存在与上期文章中写到的两个函数,可能大多朋友注意到了,可以看下例子:



locate 类似于 java 的 indexOf();不过 locate()只要找到返回的结果都大于 0(即使是查询的内容就是最开始部分),没有查找到才返回 0;

find_in_set(str,strlist),strlist 必须要是以逗号分隔的字符串,如果字符串 str 是在的 strlist 组成的 N 子串的字符串列表,返回值的范围为 1 到 N

上述例子中

select find_in_set('1,2','1,2,3');
复制代码

find_in_set 会将'1,2,3'自动分成三个子串,'1,2',在 1,2,3 三个子串中是不存在的,所以会查找结果为 0.


若依框架教程

2021.9.17


如果想了解更多若依教程,你也可能对这些感兴趣:

若依系列文章合集(持续更新中)

有意思的技术知识合集(持续更新中)

点个“在看”每天收到最新资讯!

用户头像

爱写作的95后国企产品|程序媛 2020.05.06 加入

爱写作的95后国企产品|程序媛,公众号【若依框架教程】、【V5codings】

评论

发布
暂无评论
RUOYI 框架教程 15|若依框架中 Mysql 操作 | 日期处理