利用SQL函数实现几天前、两点之间的距离
来源:互联网 发布:生化危机6 for mac 编辑:程序博客网 时间:2024/05/21 01:58
diffDate
BEGIN DECLARE n_lost_day int; DECLARE n_lost_hours int; DECLARE n_lost_minute int; set n_lost_day = date(new_date)-date(old_date); set n_lost_hours = hour(new_date)-hour(old_date); set n_lost_minute = minute(new_date)-minute(old_date); if(n_lost_minute<0) THEN set n_lost_minute = n_lost_minute+60; set n_lost_hours = n_lost_hours-1; END IF; if(n_lost_hours<0) THEN set n_lost_hours = n_lost_hours+24; set n_lost_day = n_lost_day-1; END IF; return concat(n_lost_day,"天",n_lost_hours,"小时",n_lost_minute,"分");END
diffDateHour
BEGIN DECLARE n_lost_day INT; DECLARE n_lost_hours INT; DECLARE n_lost_minute INT; SET n_lost_day = to_days(new_date) - to_days(old_date); SET n_lost_hours = hour(new_date) - hour(old_date); SET n_lost_minute = minute(new_date) - minute(old_date); IF (n_lost_minute < 0) THEN SET n_lost_minute = n_lost_minute + 60; SET n_lost_hours = n_lost_hours - 1; END IF; IF (n_lost_hours < 0) THEN SET n_lost_hours = n_lost_hours + 24; SET n_lost_day = n_lost_day - 1; END IF; IF (n_lost_day = 0 AND n_lost_hours = 0 AND n_lost_minute = 0) THEN RETURN "刚刚"; END IF; IF (n_lost_day = 0 AND n_lost_hours = 0) THEN RETURN concat(n_lost_minute, "分前"); END IF; IF (n_lost_day = 0) THEN RETURN concat(n_lost_hours, "小时前"); END IF; IF (n_lost_hours = 0) THEN RETURN concat(n_lost_day, "天前"); END IF; RETURN concat(n_lost_day, "天", n_lost_hours, "小时前"); END
diffDateMinute
BEGIN DECLARE n_lost_day INT; DECLARE n_lost_hours INT; DECLARE n_lost_minute INT; SET n_lost_day = to_days(new_date) - to_days(old_date); SET n_lost_hours = hour(new_date) - hour(old_date); SET n_lost_minute = minute(new_date) - minute(old_date); IF (n_lost_minute < 0) THEN SET n_lost_minute = n_lost_minute + 60; SET n_lost_hours = n_lost_hours - 1; END IF; IF (n_lost_hours < 0) THEN SET n_lost_hours = n_lost_hours + 24; SET n_lost_day = n_lost_day - 1; END IF; IF (n_lost_day=0) THEN IF (n_lost_hours=0) THEN if(n_lost_minute=0) THEN RETURN "1分钟"; ELSE RETURN concat(n_lost_minute,"分钟"); END IF; ELSE RETURN concat(n_lost_hours,"小时",n_lost_minute,"分钟"); END IF; ELSE IF (n_lost_hours=0) THEN if(n_lost_minute=0) THEN RETURN concat(n_lost_day,"天"); ELSE RETURN concat(n_lost_day,"天",n_lost_minute,"分钟"); END IF; ELSE RETURN concat(n_lost_day,"天",n_lost_hours,"小时",n_lost_minute,"分钟"); END IF; END IF; END
BEGIN DECLARE pk DECIMAL(20, 16); DECLARE a1 DECIMAL(20, 16); DECLARE a2 DECIMAL(20, 16); DECLARE b1 DECIMAL(20, 16); DECLARE b2 DECIMAL(20, 16); DECLARE t1 DECIMAL(20, 16); DECLARE t2 DECIMAL(20, 16); DECLARE t3 DECIMAL(20, 16); DECLARE tt DECIMAL(20, 16); SET pk = 180 /PI(); SET a1 = lat_a / pk; SET a2 = lng_a / pk; SET b1 = lat_b / pk; SET b2 = lng_b / pk; SET t1 = cos(a1) * cos(a2) * cos(b1) * cos(b2); SET t2 = cos(a1) * sin(a2) * cos(b1) * sin(b2); SET t3 = sin(a1) * sin(b1); SET tt = acos(t1 + t2 + t3); #RETURN concat("pk:",pk," a1:",a1," a2:",a2," b1:",b1," b2:",b2," t1:",t1," t2:",t2," t3:",t3," tt:",tt); RETURN 6371000 * tt; END
调用函数
-- -- 调用两点距离函数select GetDiscover(23.12398694,113.32286598, 22.99505266, 113.27586664);-- -- 调用几天前函数(精确到小时)select diffDateHour(ifnull(finish_date,CURRENT_TIME), find_date) from message;-- -- 调用几天前函数(精确到分钟)select diffDateMinute(ifnull(finish_date,CURRENT_TIME), find_date) from message;
效果图:
2
结果图:
阅读全文
1 0
- 利用SQL函数实现几天前、两点之间的距离
- 构造函数写两点之间的距离
- 两点之间的距离
- 两点之间的距离
- 两点之间的距离
- 利用JavaScript实现的根据经纬度计算地球上两点之间的距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 根据经纬度计算地球上两点之间的距离的Sql Server函数
- 利用php 计算两点地理经纬坐标之间的距离
- 求两点之间的距离
- 求两点之间的距离
- 求两点之间的距离
- 求两点之间的距离
- 求两点之间的距离
- 计算两点之间的距离
- 计算两点之间的距离
- ms系统-拆库-重构(待续)
- 使用PageHelper插件抛错
- JavaString练习2:对字符串中字符进行自然顺序排序
- MERGE
- Java基础
- 利用SQL函数实现几天前、两点之间的距离
- 第六讲 Spring MVC实现文件上传
- 【R语言 数据挖掘】R语言如何做关联规则?
- RX 简介 RxJava中文学习文档
- MongoDB
- Oracle性能优化-读懂执行计划
- java提高篇(二四)-----HashSet
- 简述slice和splice区别
- C语言程序设计(26)