2016-08-04 10 views

Antwort

-2

Diese Versuchen ...

select ADD_MONTHS (to_date ('31 -DEC-‘|| to_char (current_date, yyyy)), 12) aus dual;

+1

Dies beruht auf impliziter Konvertierung, daher funktioniert es möglicherweise nicht. Zum Beispiel gibt es in meiner DB: ** ORA-01843: kein gültiger Monat ** – Aleksej

+0

Wenn Datumsangaben auf Ihrem System standardmäßig anders formatiert sind, ändern Sie einfach die Datumszeichenfolge, um das von Ihrem System benötigte Format zu verwenden. – Hawthorne

+0

Wenn Sie eine Lösung benötigen, die unabhängig von der Formatierung von Datumsangaben funktioniert, können Sie das in der Funktion to_date zu verwendende Format angeben: 'add_months auswählen (to_date ('31 -DEC- '|| to_char (current_date,' YYYY '), 'DD-MON-YYYY'), 12) von Dual; ' – Hawthorne

-3

So etwas ...

Select LAST_DAY (ADD_MONTHS (sysdate, 12 + (12- to_number (to_char (sysdate, 'mm'))))) aus dual;

+0

Dies ergibt ** ORA-00923: FROM Schlüsselwort nicht gefunden, wo erwartet ** – Aleksej

+0

Versuchen Sie jetzt mit der aktualisierten Abfrage. – Ehtesham

4

Letztes Datum des nächsten Jahres ist ein Tag vor dem ersten Tag des nächsten Jahres. Also sollten Sie in der Lage sein, es zu bekommen, indem Sie 24 Monate zum ersten Tag dieses Jahres hinzufügen und dann einen Tag subtrahieren. Gefällt mir:

select sysdate, add_months(trunc(sysdate, 'y'), 24) - 1 as last_day_next_year from dual; 

SYSDATE LAST_DAY_NEXT_YEAR 
---------- ------------------ 
2016-08-04 2017-12-31 

1 row selected. 
Verwandte Themen