晚上好,我想知道像在oracle中的sql什麼是(SYSDATE-hire_date)/ 12 AS MONTHS和MONTHS_BETWEEN(SYSDATE,hire_date)之間的區別將產生不同的結果。oracle sql開發人員處理月
在此先感謝
晚上好,我想知道像在oracle中的sql什麼是(SYSDATE-hire_date)/ 12 AS MONTHS和MONTHS_BETWEEN(SYSDATE,hire_date)之間的區別將產生不同的結果。oracle sql開發人員處理月
在此先感謝
當你得到週數:
SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
FROM employees WHERE department_id = 90;
LAST_NAME WEEKS
------------------------- ------------
King 1481.247
Kochhar 1363.104
De Haan 1190.247
...你除以七,因爲有一個星期七天。
的SYSDATE-fire_date
表達gives you the number of days出兩個日期之間經過:
SELECT last_name, hire_date, SYSDATE-hire_date AS DAYS,
(SYSDATE-hire_date)/7 AS WEEKS
FROM employees WHERE department_id = 90;
LAST_NAME HIRE_DATE DAYS WEEKS
------------------------- ---------- ------------ ------------
King 1987-06-17 10368.732 1481.247
Kochhar 1989-09-21 9541.732 1363.105
De Haan 1993-01-13 8331.732 1190.247
因此,有1987年6月17日,今天,2015年11月5日之間的10368整整兩天,加上午夜之間0.732天目前的時間17:34。你可能對分數天不感興趣,所以你可以用trunc()
或者SYSDATE
或者減法結果;並使用trunc()
作爲除以7的結果會給你整週的數量。
你試着去適應這計算月而不是數週,用兩種計算方法:
SELECT last_name, (SYSDATE-hire_date)/12 AS MONTHS1,
MONTHS_BETWEEN(SYSDATE, hire_date) AS MONTHS2
FROM employees WHERE department_id = 90;
LAST_NAME MONTHS1 MONTHS2
------------------------- ------------ ------------
King 864.061 340.637
Kochhar 795.145 313.508
De Haan 694.311 273.766
的結果是如此的不同,因爲你誤用12分有十二個月一年,而不是一個月的十二天;你會看到一個類似的差異,如果你試圖通過52分而不是7
仔細相當於是計算週數由30來劃分,如@ lad2025在評論中指出:
SELECT last_name, (SYSDATE-hire_date)/30 AS MONTHS1,
MONTHS_BETWEEN(SYSDATE, hire_date) AS MONTHS2
FROM employees WHERE department_id = 90;
LAST_NAME MONTHS1 MONTHS2
------------------------- ------------ ------------
King 345.625 340.637
Kochhar 318.058 313.508
De Haan 277.725 273.766
它仍然不一樣大多數月份沒有完全30天。您通過一十二分之三百六十五,作爲分割得相當接近約30.42:
SELECT last_name, (SYSDATE-hire_date)/(365/12) AS MONTHS1,
MONTHS_BETWEEN(SYSDATE, hire_date) AS MONTHS2
FROM employees WHERE department_id = 90;
LAST_NAME MONTHS1 MONTHS2
------------------------- ------------ ------------
King 340.890 340.637
Kochhar 313.701 313.508
De Haan 273.920 273.766
但它不會是相同的(除非是一些短週期),因爲該算法是不一樣的,而這還不佔閏年。使用months_between()
更簡單,更安全。
謝謝..這也是有益的... –
'sysdate-hiredate =天數差異,你應該除以30而不是12 – lad2025
就像我需要30天的天數,但是我應該除以12?正如我的講師將我分爲7 –
你的講師說那個月有12天嗎? – lad2025