Oracle
 sql >> Baza danych >  >> RDS >> Oracle

LAST_DAY() Funkcja w Oracle

W bazie danych Oracle LAST_DAY() funkcja zwraca ostatni dzień miesiąca, który zawiera podaną datę.

Przyjmuje jeden argument, którym jest data, dla której chcesz znaleźć ostatni dzień miesiąca.

Składnia

Składnia wygląda tak:

LAST_DAY(date)

Gdzie date to wyrażenie daty, dla którego chcesz znaleźć ostatni dzień miesiąca.

Przykład

Oto przykład:

SELECT LAST_DAY(DATE '2030-02-01')
FROM DUAL;

Wynik:

28-FEB-30

W tym przypadku używamy daty w lutym. Jak się okazuje, luty ma w tym roku 28 dni.

Oto, co się stanie, jeśli zwiększymy datę do następnego roku przestępnego:

SELECT LAST_DAY(DATE '2032-02-01')
FROM DUAL;

Wynik:

29-FEB-32

Ostatni dzień miesiąca jest określony przez parametr sesji NLS_CALENDAR . Zobacz Jak sprawdzić wartości parametrów NLS, aby dowiedzieć się, z którego kalendarza korzysta Twoja sesja. Mój używa kalendarza gregoriańskiego.

Ponadto data jest zwracana w formacie określonym dla Twojej sesji. W tym przykładzie moja sesja używa domyślnego formatu, gdy NLS_TERRITORY parametr jest ustawiony na AMERICA . Jeśli chcesz, zawsze możesz zmienić format daty i godziny sesji.

Inne wartości daty i godziny

Działa również z innymi wartościami daty i godziny, takimi jak TIMESTAMP itp:

SELECT LAST_DAY(TIMESTAMP '2030-02-01 10:30:45.34567')
FROM DUAL;

Wynik:

28-FEB-30

Jednak zwracany typ to zawsze DATE , niezależnie od typu danych argumentu.

Daty spoza zakresu

Data zerowa i inne daty spoza zakresu skutkują błędem.

Przykład:

SELECT LAST_DAY(DATE '0000-00-00')
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT LAST_DAY(DATE '0000-00-00')
FROM DUAL
Error at Command Line : 1 Column : 22
Error report -
SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0
01841. 00000 -  "(full) year must be between -4713 and +9999, and not be 0"
*Cause:    Illegal year entered
*Action:   Input year in the specified range

Zgodnie z komunikatem o błędzie (pełny) rok musi mieścić się w przedziale -4713 i +9999 i nie być 0 .

Aktualna data

Możemy przekazać SYSDATE jako argument datetime, aby użyć bieżącej daty:

SELECT 
    SYSDATE,
    LAST_DAY(SYSDATE)
FROM DUAL;

Wynik:

     SYSDATE    LAST_DAY(SYSDATE) 
____________ ____________________ 
12-AUG-21    31-AUG-21           

Brakujący argument

Wywołanie LAST_DAY() z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:

SELECT LAST_DAY()
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT LAST_DAY()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cofnij A, jeśli B pójdzie nie tak. wiosna boot, jdbctemplate

  2. Wywołanie niezdefiniowanej funkcji oci_connect()

  3. Zabawne podzapytanie Oracle

  4. Zalecenia dotyczące obsługi Oracle i SQL Server w tej samej aplikacji ASP.NET z NHibernate

  5. Lista terytoriów obsługiwanych przez bazę danych Oracle