问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL写函数 输入参数:日期(YYYYMMDD)和下面某一个参数 返回数据:参数说明...

发布网友 发布时间:2022-05-02 00:24

我来回答

1个回答

热心网友 时间:2022-04-13 11:45

函数代码:

create or replace function func_date( --创建函数名称func_date
p_yyyymmdd number, --定义参数1 
p_num      number) --定义参数2
return date        --返回结果类型为date
as
v_result date; --声明返回结果变量
begin
  if    p_num=11
    then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'mm'); --本月初
  elsif p_num=12
    then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'q'); --本季初
  elsif p_num=13
    then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'yyyy'); --本年初
  elsif p_num=21 
    then v_result:=last_day(to_date(p_yyyymmdd,'yyyy-mm-dd'));  --本月末
  elsif p_num=22 
    then v_result:=last_day(add_months(trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'q'),2)); --本季度末
  elsif p_num=23 
    then v_result:=last_day(add_months(trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'yyyy'),11)); --本年末
  elsif p_num=31  
    then v_result:=add_months(trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'mm'),-1); --上月初
  elsif p_num=32
    then v_result:=add_months(trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'q'),-3); --上季初
  elsif p_num=33
    then v_result:=add_months(trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'yyyy'),-12); --上年初
  elsif p_num=41
    then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'mm')-1; --上月末
  elsif p_num=42
    then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'q')-1; -- 上季末
  elsif p_num=43
    then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'yyyy')-1; --上年末
  else 
    raise_application_error(-20001,'p_num参数说明不存在!'); --其它参数抛出异常
  end if;
  return v_result; --返回结果
end func_date;
/

调用函数:

select func_date(20161219,11) from al;

追问先谢谢了,不过有些看不太懂,比如elsif的用法,我用的sqlserver,能改改吗

追答这个是Oracle的,SQLServer的没接触过

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我女朋友我在同事面前说她是我媳妇她默认,在她组长面前就不承认了什么... 跨省迁户口需要的手续 户口跨省迁移需要哪些手续? cf空白名字怎么打(cf空白名字怎么打2021) 关于旅行的电影 就是一个人旅行放松心灵那种 不要纪录片 模拟人生2高斯的遗产给儿子还是女儿 模拟人生2如何跟高斯结婚啊? 模拟人生2高斯怎么找到贝拉,找到后能怎么办? 我的米2插上充电器后屏幕一直闪,快速的一下显示充电一下没在充电。请 ... ...屏幕乱闪 充不进去电 用手机连接电脑也是一样 在DB2中将10位秒转换成字符串日期时间类型,格式为yyyy-MM-dd HH:mm:ss pvp的几个问题 iQOOneo5支持【立即预定】小米Redmi手表2智能手表男女手环xiaomi+Watch2+高_百度问一问 MXD傻挂脚本 插入u盘就要我格式化怎么办 佳能a710is数码相机存储卡没有照片,但是显示存储卡已满怎么回事? 数码相机合用时显示 存储介质满 是什么意思? 我的数码相机的储存卡里什么都没有但是显示的是储存卡已满 为什么 呢 数码相机总是显示内存已满? 富士长焦相机存储介质满,如何处理 照相机总是显示存储已满 民间借贷的诉讼时效是多长时间,借条的有效期是多久 数码相机内存卡是空的但开机显示内存卡已满 借款诉讼时效规定是怎样的借条的有效期是多久 数码相机,照相时显示“存储器已满”,内存卡清空后,还是如此,这是怎么... 数码相机里有内存卡,刚拍了几张就说内存满了,拍不了 数码相机插入内存卡显示内存己满无法拍照,格式化也没用,是什么问题? 法律规定借条有效期是多久 相机照片存蓄满了不能拍照怎么解决? 为什么我的数码相机既显示内存已满又无相片 烈火之剑金手指怎么用 如何用正则表达式判断yyyy-mm 裁厚布料用锰钢剪刀好还是碳钢剪刀好? 剪布匹用什么剪刀好?! 拼布入门需要哪些工具 迅手弹弓皮筋一定要用滚刀裁剪吗? 剪刀是杠杆么 在布上面怎么区分直线 人们生活中所使用的剪刀,利用了什么原理呢?这种原理是否有普适性?_百... 锦锻怎样裁剪才能不脱丝? 剪刀和布的解答方法 有没有西班牙语版的冰雪奇缘,海洋奇缘,宝贝老板或者爱乐之城完整版电影?在哪下载?资源也行!急急急 散粉可以带上飞机吗 请问飞机上可以带化妆的散粉吗?我有一盒散粉,盒子挺大,但标注只有25g。可以带上飞机吗? 15克的气垫和8.5克的散粉可以带上飞机吗? 可以带气垫bb、粉饼、腮红上飞机吗? QQ最新的版本是什么版本? 现在最新QQ版本 什么股票走势和002298准备大涨时行情走势类似 我想问问002298这个股票,我是23.38买进去的,这个股票今年怎么样?什么时候卖掉比较合适?谢谢!有分加!