10.01.2017 Views

sql

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Ниже приведена версия данного примера для PostgreSQL, в которой используется<br />

похожая функция DATE_PART ():<br />

ВВОД<br />

SELECT order_num<br />

FROM Orders<br />

WHERE DATE_PART('year', order_date) = 2004;<br />

В MySQL, помимо DATEPART (), есть множество других функций,<br />

предназначенных для манипулирования значениями дат. Пользователи MySQL могут<br />

использовать функцию YEAR () для выборки из даты значения года:<br />

ВВОД<br />

SELECT order_num<br />

FROM Orders<br />

WHERE YEAR(order_date) = 2004;<br />

В Oracle также нет функции DATEPART (), но существуют несколько других<br />

функций манипулирования датой, которые можно использовать с этой же целью.<br />

Рассмотрим пример:<br />

ВВОД<br />

SELECT order_num<br />

FROM Orders<br />

WHERE to_number(to_char(order_date, 'YY')) = 2004;<br />

Анализ<br />

В этом примере функция to_char () используется для извлечения части даты, а<br />

функция to_number() – для преобразования этой части в числовое значение, чтобы его<br />

можно было сравнить со значением 2004.<br />

Тех же результатов можно добиться при помощи оператора BETWEEN:<br />

ВВОД<br />

SELECT order_num<br />

FROM Orders<br />

WHERE order_date BETWEEN to_date('01-JAN-2004')<br />

AND to date('31-DEC-2004');<br />

Анализ<br />

В этом примере функция Oracle to_date () используется для преобразования двух<br />

строк в даты. В одной содержится дата I января 2004, а в другой – 31 декабря 2004.<br />

Стандартный оператор BETWEEN используется для поиска всех заказов, сделанных в<br />

период между этими двумя датами. Этот код не будет работать в SQL Server, так как в<br />

этой СУБД не поддерживается функция to_date (). Однако если заменить функцию to_date<br />

() функцией DATAPART (), этот оператор можно будет использовать.<br />

Даты в Oracle<br />

Даты в формате ДД-МММ-ГГГГ (как в предыдущих примерах) системой Oracle обычно<br />

обрабатываются, даже если они не приведены к тому виду, как при использовании<br />

функции to_date (). Однако для надежности лучше всегда использовать эту функцию.<br />

В приведенных примерах выбиралась и использовалась только часть даты (год).<br />

Чтобы выбрать заказы по месяцу, необходимо сделать то же самое, указав ключевое слово<br />

AND для сравнения месяца и года.<br />

СУБД обычно могут выполнять гораздо больше действий, чем просто выборка<br />

части даты. В большинстве из них присутствуют функции для сравнения дат, выполнения

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!