2015-03-09 5 views
-1

Я должен рассчитать возраст вместе с одним десятичным знаком. Я написал следующее:Преобразование формата даты PL/SQL

cursor customer is select fname, ename, ROUND((MONTHS_BETWEEN(sysdate, dob)/12),1) age from table; 

Однако «д.р.» в таблице не находится в том же формате (вместо этого YY-MM-DD), тогда как SYSDATE (я предполагаю) использует что-то другое, я получаю литеральное сообщение с сообщением "" не соответствует строке формата "" и хотел бы помочь придумывать идеи о том, как преобразовать строку, следует ли преобразовать dob или sysdate?

+0

PL/SQL не язык, используемый в MySQL. Зная, какие СУБД, которые вы используете, наверняка помогут вам найти нужную документацию. – GolezTrol

+0

PL/SQL не является языком mysql (СУБД). Oracle (RDBMS) использует PL/SQL – Daan

ответ

2

Похоже, что колонка dob является строкой (varchar2 или char). Вы должны преобразовать его датировать

to_date(dob, 'YY-MM-DD') 

Полный запрос будет выглядеть следующим образом

cursor customer is select fname, ename, ROUND((MONTHS_BETWEEN(sysdate, to_date(dob, 'YY-MM-DD'))/12),1) age from table; 
+1

Я думаю, вы имеете в виду «to_date()» вместо «to_char()» –

+0

Да, спасибо за исправление. Я отредактирую. – dimm

Смежные вопросы