е дату 16.05.2010.
3.5 Лабораторна робота. Застосування функцій для роботи з датою/часом і арифметичних функцій
Функції для роботи з датою/часом в Oracle SQL, функції MONTHS_BETWEEN (), SYSDATE ().
Завдання:
Напишіть запит, який би повертав інформацію про імена і прізвища співробітників з таблиці hr.employees, а також про дату прийому кожного співробітника на роботу і кількості повних місяців, яке кожен співробітник відпрацював по теперішній час (теперішній час визначається по годинах вашого комп'ютера).
Результат запиту повинен виглядати так, як представлено на рис. 3.2-1.
Примітка:
Значення в стовпці «Опрацьовано місяців» у вас може бути іншим, оскільки іншим буде час на годиннику комп'ютера.
Рішення:
Код відповідного запиту може бути таким:
SELECT first_name AS «Ім'я», last_name As «Прізвище», Salary AS «Оклад», HIRE_DATE As «Дата прийому на роботу», TRUNC (MONTHS_BETWEEN (SYSDATE, HIRE_DATE)) AS «Опрацьовано місяців» FROM hr.employees.
4. Функції перетворення
Функції перетворення перетворять значення з одного типу даних в іншій. У наступній таблиці наведені деякі з функцій перетворення:
) TO_CHAR ( число | дата [, fmt]) - Перетворює число або дату в символьну рядок VARCHAR2 з моделлю формату fmt.
) TO_NUMBER (char) - Перетворює рядок символів char містить цифри, в число.
) TO_DATE (char [, fmt]) - Перетворює рядок символів char з датою в значення типу DATE відповідно до заданої моделлю fmt.
.1 Неявне і явне перетворення типів даних
Неявне перетворення типу даних може справити негативний вплив на продуктивність, особливо якщо тип даних стовпця перетвориться до типу даних константи, а не навпаки. Неявне перетворення залежить від контексту, в якому воно відбувається і, можливо, не буде працювати однаково в кожному випадку. Наприклад, неявне перетворення значення типу даних VARCHAR2 може повернути несподіваний рік залежно від значення параметра NLS_DATE_FORMAT. Прикладом неявного перетворення може бути:
SELECT * FROM emp WHERE hiredate between 01-JAN - 1 981 and 01-APR - тисячу дев'ятсот вісімдесят один raquo ;.
Явна перетворення типів даних :
SELECT * FROM emp WHERE hiredate between TO_DATE ( 01-JAN - тисяча дев'ятсот вісімдесят один raquo ;, DD-MON-YYYY ) and TO_DATE ( 01-APR - одна тисяча дев'ятсот вісімдесят одна raquo ;, DD-MON-YYYY );
Різниця полягає в тому, що я ЯВНО виконав перетворення з символьного представлення до датою з допомогою функції TO_DATE, в якій я вказав правильну маску формату. Явне перетворення вимагає додаткового набору. Використання явних перетворень слід віднести до кращим методам для будь-якої бази даних і будь-якої мови програмування.
4.2 Функція TO_CHAR з датами
Найчастіше функція TO_CHAR використовується для перетворення дати при виведенні. Справа в тому, що Oracle виводить дати при вибірці у форматі, встановленому за замовчуванням. Це може бути, наприклад, формат dd-mm-yy, dd-mon-yy або dd. mm. yy. Як правило, формат, використовуваний за умовчанням, не містить інформації про час, кварталі місяця, сторіччі та ін. На практиці часто виникає необхідність вивести більш повну інформацію, задавши необхідний формат.
SELECT TO_CHAR (SYSDATE, dd - mm - yyyy - hh24 - mi - ss ) data FROM dual ;
SELECT TO_CHAR (SYSDATE, dd «of» Month «year» yyyy ) data FROM dual.
У даному прикладі число складається з однієї цифри, тому перед ним виводиться провідний 0, так як в моделі формату зазначено, що число треба виводити двома цифрами. Крім того, модель Month припускає, що назва місяця доповнюється кінцевими пробілами до 9 символів. Щоб прибрати провідні нулі і кінцеві прогалини, використовується префікс FM. SELECT TO_CHAR (SYSDATE, fmdd «of» Month «year» yyyy ) data FROM dual;
SELECT TO_CHAR (SYSDATE, fmDAY: MONTH: YEAR ) data FROM dual.
...