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. 区别
- Mysql没有 create or replace function, 可以用drop ...代替
- Mysql是returns而 Oracle是return
- Mysql是varchar , Oracle是 varchar2
- Mysql 没有as,用的是declare声明变量 ; 定义变量在begin之内, Oracle有 as, 变量定义在as之后
- Mysql设置变量值用的是
set XXX = ...
而Oracle是 XXX := ....
- Mysql使用now(),而Oracle是sysdate
- 日期处理的一些不同,比如像使用date_format而不是to_char, 这里要用date_add处理日期-1,而Oracle只要直接-1处理即可
- Oracle中支持隐式声明,但是Mysql必须要显式声明!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了