Níže jsou uvedeny dvě funkce, které lze použít k vrácení části sekund z hodnoty datetime v databázi Oracle.
EXTRACT()
Funkce
EXTRACT(datetime)
Funkce se používá k extrahování různých částí data a času z hodnoty datetime. To zahrnuje sekundovou část.
Zde je příklad:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2035-01-01 10:15:37')
FROM DUAL;
Výsledek:
37
Je to SECOND
klíčové slovo, které extrahuje sekundovou část z hodnoty datetime. To bude zahrnovat všechny zlomkové sekundy:
SELECT
EXTRACT(
SECOND FROM TIMESTAMP '2035-01-01 10:15:37.123456789'
)
FROM DUAL;
Výsledek:
37.123456789
Další části data můžeme získat změnou na příslušné klíčové slovo. Například YEAR
, MONTH
, HOUR
, MINUTE
, atd.
Funkci můžeme použít i s jinými hodnotami data a času, jako je DATE
.
TO_CHAR(datetime)
Funkce
Můžeme také použít TO_CHAR(datetime)
fungovat jako alternativní metoda pro získání složky sekund z hodnoty datetime.
Tato funkce přijímá jako svůj první argument hodnotu datetime nebo interval a jako druhý argument model formátu. Funkce pak převede hodnotu na datový typ VARCHAR2
v zadaném formátu.
Model formátu určuje formát, pro který má být vrácena hodnota datetime/interval. Model formátu se skládá z jednoho nebo více prvků formátu. To nám umožňuje pečlivě vytvářet výsledky tak, aby odrážely náš požadovaný formát.
Pokud chceme vrátit pouze sekundy, můžeme použít jeden z formátovacích prvků, které vracejí danou komponentu.
Existuje několik různých prvků formátu, které můžeme použít při vrácení komponenty sekund z hodnoty datetime.
Nejviditelnější z nich je SS
prvek formátu:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SS')
FROM DUAL;
Výsledek:
37
Jak vidíme, SS
format element vrací pouze sekundovou část, ale ne zlomky sekund.
Zlomkové sekundy
Pokud chceme zahrnout zlomkové sekundy, můžeme použít FF
prvek formátu. Můžeme také použít X
k určení znaku radix (symbol používaný k oddělení části celého čísla od části zlomkové):
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Výsledek:
37.123456789
Je také možné omezit přesnost připojením čísla k FF
část:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF5')
FROM DUAL;
Výsledek:
37.12345
Číslo může být 1
až 9
.
I když můžete explicitně zadat svůj vlastní radixový znak – například tečku (.
), X
format element může být užitečný pro přenos mezi různými jazyky/územími.
Když jsem spustil výše uvedené příklady, moje NLS_TERRITORY
parametr byl nastaven na AUSTRALIA
, což vedlo k tomu, že znak radix byl tečkou.
Zde je to, co se stane, když změním své NLS_TERRITORY
parametr na GERMANY
:
ALTER SESSION SET NLS_TERRITORY = 'GERMANY';
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Výsledek:
37,123456789
Nyní je znakem radix čárka.
Sekundy po půlnoci
Můžeme použít SSSSS
pro návrat sekund po půlnoci:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 00:01:05', 'SSSSS')
FROM DUAL;
Výsledek:
00065