it-swarm.com.de

Wie bekomme ich den letzten Tag eines Monats von einem bestimmten Datum?

Das gegebene Datum ist beispielsweise04/04/1924und ich möchte den letzten Tag des Februar des Jahres 1924 herausfinden.

Ich habe mir den add_month ausgedacht, aber es scheint nicht flexibel zu sein, wenn ich einen anderen Monat als die Datenquelle angegeben habe

Irgendwelche guten Ideen?

17
Hoan Dang

Oracle hat eine last_day() - Funktion:

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;

Ergebnisse:

April, 30 1924 00:00:00+0000

March, 31 1924 00:00:00+0000

February, 29 1924 00:00:00+0000

Verwenden Sie Add_Months() an Ihrem Datum, um den entsprechenden Monat zu erhalten, und wenden Sie dann last_day() an.

35
Mitch Wheat

frage inpl sql, um den ersten Tag und den letzten Tag des Monats zu erhalten:

erster Tag :

select to_date(to_char(LAST_DAY(sysdate),'YYYYMM'),'YYYYMM')  from dual;

Letzter Tag:

select LAST_DAY(to_date(to_char((sysdate),'YYYYMM'),'YYYYMM'))  from dual;
3
manjiri

wenn Sie wissen möchten, ob Ihr Datum endgültig eingestellt ist

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
0
Jorgechu

Ersten und letzten Tag des Monats abrufen Ändern Sie einfach die Monatszahl, um den ersten und letzten Tag des Monats zu erhalten

 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

Ergebnis:

first         last
-------------------------- 
01/02/2017  28/02/2017
0
Abid Mehdi

um den ausgewählten Monat und das letzte Jahr des Tages zu erhalten:

SELECT TO_CHAR (LAST_DAY (TO_DATE (: X_THE_MONTH || '/ 01 /' ||: X_THE_YEAR, 'MM/DD/YYYY')), 'dd') FROM DUAL

0
Adel

Dies zeigt Ihnen den letzten Tag des Monats

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))

sie können das Systemdatum jederzeit durch to_date ('04/04/1924 ',' MM-DD-JJJJ ') ersetzen

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))

oder einfach 

select LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -2)) from dual;
0
Civa