Получить год от даты строки в Oracle SQL - PullRequest
0 голосов
/ 06 июня 2018

У меня есть следующий столбец дат:

EXPIRY_DAT 31-Oct-17 31-Oct-17 18-Nov-18 12:11:10 31-Dec-12 31-Oct-17 31-Oct-17 18-Nov-18 12:11:10 31-Dec-12 31-Oct-17 31-Oct-17 20-Jul-18 19:20:33 31-Oct-18 31-Oct-18 11-Aug-19 21:52:56 31-Dec-12 . . .

Я хотел бы получить год из этих рядов в форме YYYY.Я уже пытался использовать следующую строку кода SQL:

TO_DATE(TO_CHAR(EXPIRY_DAT, 'DD-MON-YY HH:MI:SS'), 'YYYY'

, хотя он возвращает мне сообщение об ошибке:

ORA-01830: изображение в формате даты заканчивается перед преобразованием всей входной строки

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Если все ваши даты в одном из показанных вами форматов, этого может быть достаточно:

-- test case
with dateTable(EXPIRY_DAT) as (
    select '31-Oct-17'            from dual union all
    select '31-Oct-17'            from dual union all
    select '18-Nov-18 12:11:10'   from dual union all
    select '31-Dec-12'            from dual union all
    select '31-Oct-17'            from dual union all
    select '31-Oct-17'            from dual union all
    select '18-Nov-18 12:11:10'   from dual union all
    select '31-Dec-12'            from dual union all
    select '31-Oct-17'            from dual union all
    select '31-Oct-17'            from dual union all
    select '20-Jul-18 19:20:33'   from dual union all
    select '31-Oct-18'            from dual union all
    select '31-Oct-18'            from dual union all
    select '11-Aug-19 21:52:56'   from dual union all
    select '31-Dec-12'            from dual
)
-- query
select to_char(to_date(substr(EXPIRY_DAT, 1, 9), 'dd-mon-yy'), 'yyyy')
from dateTable
0 голосов
/ 06 июня 2018

Использование:

select extract(year from TO_DATE(SUBSTR(EXPIRY_DAT,1,9),'DD-Mon-YY')
from your_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...