oracle獲取上一旬的開始時間和結束時間的函式

2021-06-18 05:58:07 字數 2481 閱讀 4117

-- 獲取上旬開始時間

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'

endinto 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'

endinto 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

參考:

oracle獲取上一旬的開始時間和結束時間的函式

oracle獲取上一旬的開始時間和結束時間的函式 sql 獲取上旬開始時間 create or replace function fd lastxunstart rq in date return string is refstr varchar2 50 v rq date begin 獲取上一旬的...

php 根據年份獲取每週的開始時間和結束時間

原本覺得這個函式是在網上能隨便就能找到的,誰知道千篇一律的都是那個函式,而且發現如果今年是2018,那麼2018至後面的年份根本就得不各週的開始和結束時間戳 陣列。所以自己寫了!但是演算法方面應該可以優化!如下直接甩函式 如果可以優化,請幫忙給出優化的函式,謝謝!function get week ...

python 獲取某一天的開始時間戳

import time from datetime import datetime,timedelta 首先獲取你想得到的某一天 假如想獲取6天前的時間戳 day datetime.today date timedelta days 6 首先用 time.strptime 這個函式把日期轉換為 st...