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

TO_CHAR(data/godzina) Funkcja w Oracle

W bazie danych Oracle TO_CHAR(datetime) funkcja konwertuje datę i godzinę lub wartość interwału na VARCHAR2 wartość w formacie określonym przez format daty.

Składnia

Składnia wygląda tak:

TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])

Gdzie:

  • datetime może być wartością DATE , TIMESTAMP , TIMESTAMP WITH TIME ZONE , TIMESTAMP WITH LOCAL TIME ZONE typ danych
  • interval może być wartością INTERVAL DAY TO SECOND lub INTERVAL YEAR TO MONTH typ danych
  • fmt jest opcjonalnym modelem formatu, który określa sposób formatowania wyniku
  • 'nlsparam' jest opcjonalnym argumentem, który określa język, w którym zwracane są nazwy i skróty miesięcy i dni.

Przykład

Oto przykład do zademonstrowania:

SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL;

Wynik:

WED, 26 SEPTEMBER 2035

Zwrócił więc datę podaną w pierwszym argumencie, w formacie określonym przez drugi argument.

Drugi argument dostarcza model formatu. Model formatu może składać się z co najmniej jednego elementu formatu. Na przykład DY jest elementem formatu, tak jak DD , MONTH itp.

Zapoznaj się z pełną listą elementów formatu daty i godziny w Oracle, aby zapoznać się z listą elementów formatu, których można użyć do formatowania wartości daty i godziny za pomocą tej funkcji.

Format domyślny

Jeśli pominiesz fmt argument, wynik zostanie przekonwertowany w następujący sposób:

  • DATE wartości są konwertowane na wartości w domyślnym formacie daty.
  • TIMESTAMP i TIMESTAMP WITH LOCAL TIME ZONE wartości są konwertowane na wartości w domyślnym formacie znacznika czasu.
  • TIMESTAMP WITH TIME ZONE wartości są konwertowane na wartości z domyślnym znacznikiem czasu w formacie strefy czasowej.
  • Wartości interwału są konwertowane na numeryczną reprezentację literału interwału.

Oto przykład konwersji DATE wartość bez określenia formatu:

SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL;

Wynik:

26/SEP/35

W tym przypadku domyślny format daty mojej sesji to DD/MON/RR , a więc wynik to odzwierciedla. Wiem, że jest to domyślny format daty mojej sesji, ponieważ zadałem zapytanie o V$NLS_PARAMETERS widok, który pokazuje mi aktualną wartość parametrów NLS.

Zobacz Jak sprawdzić wartości parametrów NLS, jeśli chcesz je sprawdzić.

Zobacz także Jak zmienić format daty sesji, jeśli chcesz zmienić domyślny format daty i godziny dla bieżącej sesji.

Odstęp

Oto przykład, który wyświetla wartość interwału w domyślnym formacie:

SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL;

Wynik:

+25-02

'nlsparam' Argument

'nlsparam' argument określa język, w którym zwracane są nazwy i skróty miesięcy i dni. Argument ten może mieć następującą postać:

'NLS_DATE_LANGUAGE = language'

Przykład:

SELECT 
    TO_CHAR(
        DATE '2035-09-26', 
        'DY, DD MONTH YYYY',
        'NLS_DATE_LANGUAGE = SPANISH'
    )
FROM DUAL;

Wynik:

MIÉ, 26 SEPTIEMBRE 2035

Argumenty zerowe

Przekazywanie null wyniki w null :

SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL;

Wynik:

null

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Brakujący argument

Wywołanie funkcji bez przekazywania żadnych argumentów powoduje błąd:

SELECT TO_CHAR()
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT TO_CHAR()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

Przekazywanie zbyt wielu argumentów również powoduje błąd:

SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL
Error at Command Line : 1 Column : 72
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*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. Sprzężenia jawne a sprzężenia niejawne?

  2. Parsowanie tnsnames.ora w Visual C# 2008

  3. Zmodyfikuj zapytanie widoku zmaterializowanego

  4. SQL (ORACLE):ORDER BY i LIMIT

  5. 12c Zmiany DBA_USERS