昨天在一家公司面試,叫我用儲存過程求得下述問題:已知某一天是星期幾,求某天是星期幾,例:已知2023年8月5號星期四,求2023年8月23號星期幾?
下面是我寫的儲存過程,由於是剛剛學,所以問題還很多,望各位大蝦們指教。
/* formatted on 2010-8-23 16:29:26 (qp5 v5.149.1003.31008) */
create or replace procedure get_weekday (
in_date in varchar, -- 輸入日期
in_weekday in integer, -- 星期幾 0 星期天、1 星期一 類推
out_date in varchar, -- 要查詢的日期
out_weekday out integer) -- 輸入星期幾 0 星期0、1 星期1 類推【人懶,就不轉換了】
asout_day integer;
begin
select to_date (out_date, 'yyyy-mm-dd') - to_date (in_date, 'yyyy-mm-dd') -- 查詢的日期和提供的日期相減
into out_day
from dual;
if out_day >= 0 -- 相減得到的如果是正數
then
select mod (mod (out_day, 7) + in_weekday, 7)
into out_weekday
from dual;
else -- 如果是負數
select mod (mod (out_day + 7, 7) + in_weekday, 7)
into out_weekday
from dual;
end if;
end;
執行後呼叫此儲存過程
/* formatted on 2010-8-23 16:13:01 (qp5 v5.149.1003.31008) */
set serverout on; --開啟輸出開關
declare
v_ret integer;
begin
get_weekday ('2010-08-25',
3,'2010-08-24',
v_ret); --執行上面的儲存過程
dbms_output.put_line ('2023年8月24號,星期' || v_ret );
end;
得到如下結果
2023年8月24號,星期2
初步實現
某天是星期幾
題目描述 澤勒一致性是由克里斯汀 澤勒開發的用於計算某天是星期幾的演算法。這個公式是 h q 26 m 1 10 k k 4 j 4 5j mod 7 其中 一 h 是乙個星期中的某一天 0 為星期六,1 為星期天,2 為星期一 6 為星期五 二 q 是某月的第幾天 三 m 是月份 3 為三月,4 ...
判斷某天是星期幾
判斷某天是星期幾 public static boolean isleapyear int year 理論基礎 日期格式 y m d,y為年份數 y 1582 m為月份數 02 m m 12 m 3 d為日。相比於通用通用計算公式而言,蔡勒 zeller 公式大大降低了計算的複雜度。3 基姆拉爾森計...
ACM之 求某天是星期幾
演算法如下 基姆拉爾森計算公式 w d 2 m 3 m 1 5 y y 4 y 100 y 400 mod 7 在公式中d表示日期中的日數 1,m表示月份數,y表示年數。注意1 在公式中有個與其他公式不同的地方 把一月和二月看成是上一年的十三月和十四月,例 如果是2004 1 10則換算成 2003...