sql >> Databáze >  >> RDS >> Oracle

Jak extrahovat číslo měsíce z data v Oracle

Pokud je hodnotou číslo nebo řetězec, můžete ji převést na datum pomocí vhodné masky – což je to, co vám chybí a co způsobuje chybu, kterou dostáváte (protože používá NLS_DATE_FORMAT nastavení, které zjevně neodpovídá formátu dat; ale na které byste se stejně neměli spoléhat, jak řekl @MTO v komentářích):

to_date(ID_BB_SECURITY, 'YYYYMMDD')

a poté extrahujte číslo měsíce z toho:

select extract(month from to_date(ID_BB_SECURITY, 'YYYYMMDD')) from BT_EXPORT

Nebo můžete použít pouze podřetězec:

select to_number(substr(ID_BB_SECURITY, 5, 2)) from BT_EXPORT;

Ty předpokládají pevný konzistentní formát, což je vždy riskantní předpoklad při použití nesprávného datového typu. Pokud se jedná o číslo, provádějí implicitní převod z čísla na řetězec, který byste pro větší přehlednost mohli převést na explicitní převod.

Pokud je to již datum – jak by samozřejmě mělo být – pak převod nepotřebujete:

select extract(month from ID_BB_SECURITY) from BT_EXPORT


  1. Následná otázka:Porovnejte řádky v tabulce Oracle a aktualizujte odpovídající řádky

  2. MySQL:Záznamy vkládané po hodinách, za posledních 24 hodin

  3. Řadit dotaz SQL a resetovat ID a začít v číselném pořadí pokaždé, když vytvořím dotaz nebo seřadím podle značky <th>

  4. Jak mohu spustit kód pl/pgsql bez vytvoření funkce?