oracle获取上一旬的开始时间和结束时间的实现函数

代码如下:

-- 获取上旬开始时间
create or replace function fd_lastxunstart(rq in date) return string is
refstr varchar2(50);
v_rq date;
begin
--获取上一旬的日期
v_rq := trunc(rq);
select case decode(trunc((to_char(v_rq, 'dd') - 1) / 10),
0,
'上旬',
1,
'中旬',
'下旬')
when '上旬' then --返回上个月的下旬
to_char(add_months(v_rq, -1), 'yyyyMM') || '21'
when '中旬' then
to_char(v_rq, 'yyyymm') || '01' else 
to_char(v_rq, 'yyyymm') || '11'
end
into refstr
from dual;
return refstr;
end fd_lastxunstart;

-- 这个返回的是:上旬的开始日期
select sysdate from dual;
select fd_lastxunstart(sysdate) from dual;
select fd_lastxunstart(to_date('20130305','yyyymmdd')) from dual;
select fd_lastxunstart(to_date('20130311','yyyymmdd')) from dual;
select fd_lastxunstart(to_date('20130325','yyyymmdd')) from dual;

-- 执行结果为: 2013/9/5 12:08:39、20130821、20130221、20130301、20130311

---- 获取上一旬的结束日期
-- 传递进去 一个 date 类型的值,返回一个varchar类型的上旬结束日期
create or replace function fd_lastxunend(rq in date) return string is
refstr varchar2(50);
v_rq date;
begin
--获取上一旬的日期
v_rq := trunc(rq);
select case decode(trunc((to_char(v_rq, 'dd') - 1) / 10),
0,
'上旬',
1,
'中旬',
'下旬')
when '上旬' then --返回上个月的最后1天
--chr(39) 这个是加引号
to_char(last_day(add_months(v_rq, -1)) + 1 - 1 / 24 / 60 / 60,
'yyyymmdd')
when '中旬' then
to_char(v_rq, 'yyyymm') || '10' else 
to_char(v_rq, 'yyyymm') || '20'
end
into refstr
from dual;
return refstr;
end fd_lastxunend;

-- 这个获取的是:上旬的结束日期
select fd_lastxunend(sysdate) from dual;
select fd_lastxunend(to_date('20130305','yyyymmdd')) from dual;
select fd_lastxunend(to_date('20130311','yyyymmdd')) from dual;
select fd_lastxunend(to_date('20130315','yyyymmdd')) from dual;
select fd_lastxunend(to_date('20130221','yyyymmdd')) from dual;

--执行结果:20130831、20130228、20130310、20130310、20130220

-- 观察 1 / 24 / 60 / 60 的作用 这个是一秒
select last_day(add_months(trunc(sysdate), -1)) + 1 - 1 / 24 / 60 / 60
from dual;
select last_day(add_months(trunc(sysdate), -1)) from dual;
select last_day(add_months(trunc(sysdate), -1)) + 1 from dual;
-- 执行结果:2013/8/31 23:59:59、2013/8/31、2013/9/1

(0)

相关推荐

  • Oracle通过时间(分钟)计算有几天几小时几分钟的方法

    本文实例讲述了Oracle通过时间(分钟)计算有几天几小时几分钟的方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: SELECT TRUNC(2013 / 24 / 60, 0) || '天' ||         trunc((2013 - 60 * 24 * TRUNC(2013 / 24 / 60, 0)) / 60, 0) || '小时' ||         trunc(2013 - 60 * 24 * TRUNC(2013 / 24 / 60, 0) -         

  • oracle 时间格式的调整

    select * from V$NLS_PARAMETERS; SQL> alter session set NLS_DATE_LANGUAGE = 'SIMPLIFIED CHINESE'; Session altered SQL> Select to_char(sysdate,'yyyy-Mon-day') from dual; TO_CHAR(SYSDATE,'YYYY-MON-DAY' ------------------------------ 2009-5月 -星期三 SQL>

  • oracle日期时间型timestamp的深入理解

    1.字符型转成timestamp 复制代码 代码如下: select to_timestamp('01-10月-08 07.46.41.000000000 上午','dd-MON-yy hh:mi:ss.ff AM')  from dual; 2.timestamp转成date型 复制代码 代码如下: select cast(to_timestamp('01-10月-08 07.46.41.000000000 上午','dd-MON-yy hh:mi:ss.ff AM') as date) ti

  • Oracle关于时间/日期的操作

    在oracle中有很多关于日期的函数,如: 1.add_months()用于从一个日期值增加或减少一些月份 date_value:=add_months(date_value,number_of_months) 例: SQL> select add_months(sysdate,12) "Next Year" from dual; Next Year ---------- 13-11月-04 SQL> select add_months(sysdate,112) "

  • oracle中得到一条SQL语句的执行时间的两种方式

    oracle中如果需要得到一条SQL语句的执行时间可以用如下2种方式 复制代码 代码如下: SQL> set timing on; SQL> select count(*) from wea; COUNT(*) ---------- 39490 已用时间: 00: 00: 00.06 SQL> select sql_text, elapsed_time from v$sql 2 where sql_text like 'select count(*) from wea'; 未选定行 已用

  • 计算机名称修改后Oracle不能正常启动问题分析及解决

    前一阵子,在下给老妹装好oracle后,发现老妹的计算机名称好长,不容易记,于是一时手痒,将其计算机名称更改了一下,没想到就这一步操作,可苦坏了俺老人家了,一场悲剧即将开始! 当更改计算机名称,重启电脑后,发现oracle不能启动了.当时俺就想呀,差哪呀,安装完成后,oracle还是可以启动的呢,怎么现在就不行了呢.经过俺老人家仔细的回忆,才发现罪魁祸首就是俺随手更改的计算机名称.因为oracle启动的监听,代理等都是与计算机名称绑定在一起的. 俺马上使出俺唯一的杀手戬--google,经过网上

  • 修改计算机名或IP后Oracle10g服务无法启动的解决方法

    遇到的问题,问题产生原因不详.症状为,windows服务中有一项oracle服务启动不了,报出如下错误. Windows 不能在 本地计算机 启动 OracleDBConsoleorcl .有关更多信息,查阅系统事件日志.如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码 2 后从网上寻得一贴,问题解决,解决原因不详,反正就是解决了. 问题描述:学校机房母盘安装Oracle10g传输到其它机器,母盘的Oracle可以正常使用,而其它机器启动Oracle服务时无法启动.

  • Oracle时间日期操作方法小结第1/2页

    sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdate+5/24 在系统时间基础上延迟5小时 sysdate+5 在系统时间基础上延迟5天 add_months(sysdate,-5) 在系统时间基础上延迟5月 add_months(sysdate,-5*12) 在系统时间基础上延迟5年 上月末的日期:select last_day(add_months(sysdate, -1)) from dual; 本月

  • oracle 日期时间函数使用总结

    今天闲来没事, 特意从网上整理了一些资料, 以备日后查阅. 一.常用日期数据格式 1. 获取年的最后一位, 两位, 三位, 四位 select to_char(sysdate,'Y') from dual; -- 获取年的最后一位select to_char(sysdate,'YY') from dual; -- 获取年的最后两位select to_char(sysdate,'YYY') from dual; -- 获取年的最后三位select to_char(sysdate,'YYYY') f

  • oracle获取上一旬的开始时间和结束时间的实现函数

    复制代码 代码如下: -- 获取上旬开始时间 create or replace function fd_lastxunstart(rq in date) return string is refstr varchar2(50); v_rq date; begin --获取上一旬的日期 v_rq := trunc(rq); select case decode(trunc((to_char(v_rq, 'dd') - 1) / 10), 0, '上旬', 1, '中旬', '下旬') when

  • java获取指定开始时间与结束时间之间的所有日期

    本文实例为大家分享了java获取指定开始时间与结束时间之间的所有日期的具体代码,供大家参考,具体内容如下 import java.text.SimpleDateFormat; import java.util.Calendar; public class TimerTest { public static void main(String[] args) throws Exception { String beginDate = "2016-07-16";//开始时间 String e

  • vant 时间选择器--开始时间和结束时间实例

    我就废话不多说了,大家还是直接看代码吧~ <template> <div class="linesMigrate"> <div class="conditionDiv"> <div class="singleCondition" :style="conditonStyle2" @click="showPopupDateChooseStart"> <div

  • 用vbs记录屏幕保护程序的开始时间和结束时间

    问: 您好,脚本专家!如何记录屏幕保护程序的开始时间和结束时间? -- JS 答: 您好,JS.您知道,一位脚本专家(嘿,谁说"肯定是 Greg"?)年纪大得记得屏幕保护程序刚出现的日子.那时,这类脚本毫无意义.毕竟,屏幕保护程序启动后,每个人都神魂颠倒,从未想过让它结束.事实上,作为计算机支持人员的这位脚本专家首先必须做的一件事就是在每个人的桌面上创建快捷方式,使他们能够随时启动"飞转的小烤炉". 那时人们很容易得到快乐. 啊,但是活在过去没有意义,对吧?在今天的

  • jquery easyui 对于开始时间小于结束时间的判断示例

    对于开始时间小于结束时间的判断可以参考,jquery easyui里的ValidateBox进行判断 好吧!直接上代码 复制代码 代码如下: 查看内容:按时间: <input class="easyui-datetimebox" style="width: 180px" id="start2" value="${startTime}"> <span class="newfont06">

  • laydate如何根据开始时间或者结束时间限制范围

    本文教大家如何实现laydate根据开始时间或者结束时间限制范围,供大家参考,具体内容如下 $(window).load(function(){//初始化时间控件 var cartimeDate = laydate.render({ elem: '#cartime' //用车时间 ,type: 'datetime' ,format: 'yyyy-MM-dd HH:mm' ,done:function(value, date){ returntimeDate.config.min=getDateA

  • easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码

    一.Html代码 注意的是需要加上data-options="editable:false",不能直接修改日期 <tr> <td width="15%" class="label">合同起始日期:</td> <td width="35%"> <input value="${loan.contractBegtime}" class="f1 eas

  • js校验开始时间和结束时间

    本文实例为大家分享了js校验开始时间和结束时间的具体代码,供大家参考,具体内容如下 <html> <head> <script> function checkTime(){ var startTime = document.getElementById("_startTime").value.trim(); var endTime = document.getElementById("_endTime").value.trim()

  • php获取今日开始时间和结束时间的方法

    话不多说,请看代码: $begintime=date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d'),date('Y'))); $endtime=date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1); 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

  • Android 自定义日期段选择控件功能(开始时间-结束时间)

    开发中碰到个需求,需要在一个空间中选择完成开始和结束时间.实现的过程走的是程序员开发的老路子,找到轮子后自己改吧改吧就成了. 当时做的时候有几个需求:1.当天为最大的结束日期,2.最大选择范围1年,3.开始时间和结束时间可以为同一天.如有其他需求实现,可以参考代码改进一下.先上效果图: 视频点击后的虚影是屏幕录制的原因.实现步骤:(如有缺失什么资源,请告知.开始时间和结束时间显示自己布局内添加就可以) 1.自定义控件属性 <declare-styleable name="MyCalenda

随机推荐