首页 > 数据库 >Mysql和Oracle自定义函数区别

Mysql和Oracle自定义函数区别

时间:2024-03-07 12:55:21浏览次数:17  
标签:-% 自定义 50 datetime date Mysql Oracle

1.Mysql 自定义函数

drop function if exists get_date;
create function get_date(v_datetime datetime, v_time varchar(50))
returns varchar(50)
begin
	declare v_date varchar(50);
	declare cDate varchar(50);
	declare beginDate varchar(50);
	set cDate = date_format(v_datetime, '%Y-%m-%d %h:%i:%s');
	set beginDate = concat(date_format(v_datetime, '%Y-%m-%d'), ' ', v_time);
	if cDate < beginDate then
		set v_date = date_format(date_add(v_datetime, interval -1 day),'%Y-%m-%d');
	else 
		set v_date = date_format(v_datetime, '%Y-%m-%d'); 
	end if;
	return v_date;
end;

2. Oracle下自定义函数

CREATE OR REPLACE FUNCTION get_date(v_datetime date, v_time varchar2)
return varchar2
AS
	v_date varchar2(50);
	cDate varchar2(50);
	beginDate varchar2(50);
begin
	cDate := TO_CHAR(v_datetime, 'YYYY-MM-DD hh24:mi:ss');
	beginDate := TO_CHAR(v_datetime, 'YYYY-MM-DD') || ' ' || v_time ;
	if cDate < beginDate then
		v_date := TO_CHAR(v_datetime-1,'YYYY-MM-DD');
	else 
		v_date := TO_CHAR(v_datetime, 'YYYY-MM-DD'); 
	end if;
	return v_date;
end;

3. 区别

  1. Mysql没有 create or replace function, 可以用drop ...代替
  2. Mysql是returns而 Oracle是return
  3. Mysql是varchar , Oracle是 varchar2
  4. Mysql 没有as, 定义变量在begin之内, Oracle有 as, 变量定义在as之后
  5. Mysql设置变量值用的是 set XXX = ... 而Oracle是 XXX := ....
  6. Mysql使用now(),而Oracle是sysdate
  7. 日期处理的一些不同,比如像使用date_format而不是to_char, 这里要用date_add处理日期-1,而Oracle只要直接-1处理即可

标签:-%,自定义,50,datetime,date,Mysql,Oracle
From: https://www.cnblogs.com/trmbh12/p/18058622

相关文章

  • MySQL explain
    简介mysqlexplain(或desc)用于分析SQL语句的执行计划,多用于测试查询性能。语法:explainsql...注意explain执行DML语句,数据不发生变化。explain执行的结果可以有多条数据,一条数据对应一个表,如果涉及union,MySQL内部会产生一个临时表,就会导致结果多一行数据。unionall不会创建......
  • 开源.NET8.0小项目伪微服务框架(分布式、EFCore、Redis、RabbitMQ、Mysql等)
    1、前言为什么说是伪微服务框架,常见微服务框架可能还包括服务容错、服务间的通信、服务追踪和监控、服务注册和发现等等,而我这里为了在使用中的更简单,将很多东西进行了简化或者省略了。年前到现在在开发一个新的小项目,刚好项目最初的很多功能是比较通用的,所以就想着将这些功能抽......
  • Mysql自定义函数报错合集
    参考:Mysql自定义函数报错解决方法1.在MySql中创建自定义函数报错信息如下:1.1错误显示ERROR1418(HY000):ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(youmightwanttousethelesssafel......
  • Oracle数据库Date类型查询结果多出“.0“的解决方法
    ​ oracle设置数据库某张表的字段类型为date,数据库存值为 2019-11-2518:51:47格式,但是从数据库查询出来之后格式为  StringstopTime=map.get("stopTime").toString;2019-11-2518:51:47.0,多了个零,不知是毫秒还是纳秒,目前还不知为何,解决办法为转换时间类型或者前端分......
  • 【已解决】[图文步骤] message from server: “Host ‘172.17.0.1‘ is not allowed t
    写于2024.03.07北京.朝阳@目录报错信息环境现场解决方案步骤:成功最后报错信息先看看和你的报错一样不一样null,messagefromserver:"Host'172.17.0.1'isnotallowedtoconnecttothisMySQLserver"环境现场mac电脑使用docker部署了一个mysql。docker......
  • Q:oracle通过正则表达式替换对应值
    示例视图把原ip地址替换成192.167.41.60:8080SELECTreplace(jg.yxwjjdz,regexp_substr(jg.yxwjjdz,'([0-9]{1,3}.){3}[0-9]{1,3}.{0,10}[0-9]/'),'192.167.41.60:8080/'函数用法regexp_like(search_string,pattern[,match_option])参数说明:search_string:是搜索值patter......
  • 运行时遇到Oracle错误1017 invalid username/password;login denied
    参考链接:https://answer.baidu.com/answer/land?params=7elCyy2%2BVQFLNLJM1h81dr5QZQQgc1gH3Jx0mKtGyC9iN883lLAjVKkqqFwgT9IkwDSCCV6LpBhAaZmXkqXteDsXxjanzrzpWVxBkZhfR3Unz5gw02%2BImYJ2Z%2Bvnm92UuArsoipr6J4Lg4wWW8llDohcXIR6bJhJl2%2Fy598QiTvvwPJAYShha1DQ3DoUCfGRi%2BD......
  • Mysql 基础
    创建数据库CREATEDATABASENAME;创建表#中括号[]是可选的意思,命令中不带中括号CREATETABLEtable_name(column1datatype[NULLorNOTNULL][DEFAULT默认值][AUTO_INCREMENTPRIMARYKEY],column2datatype,...//上边没有PRIMARYKEY可以在最下......
  • Java自定义异常和全局异常处理
    1、自定义异常:自定义异常类 BusinessExceptionextendsRuntimeException:RuntimeException是Java提供的一个运行时异常类。publicclassBusinessExceptionextendsRuntimeException{privateintcode;//使用枚举构造publicBusinessException(HttpCodeEn......
  • 【Oracle】使用like的时候遇到的问题
    【Oracle】使用like的时候遇到的问题like语句其中的%就代表着一个零或者多个字符,_代表一个字符,%与_可以同时使用name想查询以‘_’结尾的字符用这个语句就会有问题selectcount(1)fromdualwhere'底壳组件.pdf'like'%_'LIKE语句与多个下划线一样可以匹配出来数据,一般遇......