Poniżej znajdują się dwie funkcje, których można użyć do zwrócenia części sekund z wartości daty i godziny w bazie danych Oracle.
EXTRACT()
Funkcja
EXTRACT(datetime)
Funkcja służy do wyodrębniania różnych części daty i godziny z wartości daty i godziny. Obejmuje to część sekund.
Oto przykład:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2035-01-01 10:15:37')
FROM DUAL;
Wynik:
37
To SECOND
słowo kluczowe, które wyodrębnia część sekund z wartości daty i godziny. Obejmuje to ułamki sekund:
SELECT
EXTRACT(
SECOND FROM TIMESTAMP '2035-01-01 10:15:37.123456789'
)
FROM DUAL;
Wynik:
37.123456789
Możemy uzyskać inne części daty, zmieniając je na odpowiednie słowo kluczowe. Na przykład YEAR
, MONTH
, HOUR
, MINUTE
itp.
Możemy również użyć funkcji z innymi wartościami datetime, takimi jak DATE
.
TO_CHAR(datetime)
Funkcja
Możemy również użyć TO_CHAR(datetime)
funkcja jako alternatywna metoda pobierania składnika sekund z wartości daty i godziny.
Ta funkcja akceptuje wartość daty i godziny lub przedziału jako swój pierwszy argument, a model formatu jako drugi argument. Funkcja następnie konwertuje wartość na typ danych VARCHAR2
w określonym formacie.
Model formatu określa format, dla którego ma zostać zwrócona wartość daty/godziny/interwału. Model formatu składa się z co najmniej jednego elementu formatu. Dzięki temu możemy starannie opracować wyniki, aby odzwierciedlić nasz pożądany format.
Jeśli chcemy zwrócić tylko sekundy, możemy użyć jednego z elementów formatu, które zwracają ten składnik.
Istnieje kilka różnych elementów formatu, których możemy użyć podczas zwracania składnika sekund z wartości daty i godziny.
Najbardziej oczywistym jest SS
element formatu:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SS')
FROM DUAL;
Wynik:
37
Jak widać, SS
element format zwraca tylko część sekund, ale nie ułamki sekund.
Ułamki sekund
Jeśli chcemy uwzględnić ułamki sekund, możemy użyć FF
element formatu. Możemy również użyć X
aby określić znak podstawy (symbol używany do oddzielenia części całkowitej od części ułamkowej):
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Wynik:
37.123456789
Możliwe jest również ograniczenie precyzji poprzez dodanie liczby do FF
część:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF5')
FROM DUAL;
Wynik:
37.12345
Numer może być 1
do 9
.
Chociaż możesz wyraźnie podać swój własny znak podstawy – na przykład kropkę (.
), X
element formatu może być przydatny do przenoszenia na różne języki/terytoria.
Kiedy uruchomiłem powyższe przykłady, mój NLS_TERRITORY
parametr został ustawiony na AUSTRALIA
, co spowodowało, że podstawa była kropką.
Oto, co się stanie, gdy zmienię moje NLS_TERRITORY
parametr do GERMANY
:
ALTER SESSION SET NLS_TERRITORY = 'GERMANY';
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Wynik:
37,123456789
Teraz podstawa to przecinek.
Sekundy po północy
Możemy użyć SSSSS
aby zwrócić sekundy po północy:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 00:01:05', 'SSSSS')
FROM DUAL;
Wynik:
00065