Par exemple, la date indiquée est04/04/1924et je souhaite connaître le dernier jour du mois de février 1924.
Je suis venu avec le add_month mais il semble pas flexible si j'ai différent mois donné de source de données
Des bonnes idées?
Oracle a une fonction last_day()
:
SELECT LAST_DAY(to_date('04/04/1924','MM/DD/YYYY')) from dual;
SELECT LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM/DD/YYYY'), -1)) from dual;
SELECT LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM/DD/YYYY'), -2)) from dual;
Résultats:
April, 30 1924 00:00:00+0000
March, 31 1924 00:00:00+0000
February, 29 1924 00:00:00+0000
Utilisez Add_Months()
à votre date pour obtenir le mois approprié, puis appliquez/ last_day()
.
requête inpl sql pour obtenir le premier jour et le dernier jour du mois:
premier jour :
select to_date(to_char(LAST_DAY(sysdate),'YYYYMM'),'YYYYMM') from dual;
Dernier jour:
select LAST_DAY(to_date(to_char((sysdate),'YYYYMM'),'YYYYMM')) from dual;
si vous voulez savoir si votre date est finale
SELECT
case when
TO_DATE('19240430','YYYYMMDD') = LAST_DAY(TO_DATE('04/04/1924','MM/DD/YYYY'))
THEN 1 ELSE 0 END LAST_MOUNTH_DAY FROM DUAL
Obtenir les première et dernière dates du mois Il suffit de changer le chiffre du mois pour obtenir la première et la dernière date du mois.
select
to_date('01/'|| '07/' || to_char(sysdate, 'YYYY'), 'dd/mm/yyyy') first,
last_day(to_date('01/'|| '07/' || to_char(sysdate, 'YYYY'), 'dd/mm/yyyy')) last
from dual
Résultat:
first last
--------------------------
01/02/2017 28/02/2017
pour obtenir le mois et l'année sélectionnés le dernier jour:
SELECT TO_CHAR (LAST_DAY (TO_DATE (: X_THE_MONTH || '/ 01 /' ||: X_THE_YEAR, 'MM/JJ/AAAA')), 'jj') DU DOUBLE
Cela vous montrera le dernier jour du mois
SELECT Max(LAST_DAY(ADD_MONTHS(SYSDATE, -2)) + level)
FROM dual
CONNECT BY
level <= LAST_DAY(ADD_MONTHS(SYSDATE, -1)) - LAST_DAY(ADD_MONTHS(SYSDATE, -2))
vous pouvez remplacer la date système de la date de votre choix par to_date ('04/04/1924', 'MM-JJ-AAAA')
SELECT Max(LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -2)) + level)
FROM dual
CONNECT BY
level <= LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -1)) - LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -2))
ou simplement
select LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -2)) from dual;