Побудова запитів sql

Мал. 3.31. Результат роботи функції DATEADD

Для визначення величини часового проміжку від першого заданого значення типу дата, час або дата / час до другого може використовуватися функція DATEDIFF. Ця функція повертає значення типу BIGINT і має такий вигляд:

DATEDIFF ( <временной отрезок> FROM <значение1> FOR <значение2> )

DATEDIFF ( <временной отрезок>, <значение1>, <значение2> ), Де <временной отрезок> має той же синтаксис, що і в функції DATEADD. Слід зазначити наступне:

- функція повертає позитивне число, якщо <значение2> перевищує <значение1>, негативне - якщо <значение1> перевищує <значение2>, і нуль - якщо значення рівні;

- якщо результат обчислення дробовий, то виводиться округлене значення;

- порівняння значення типу DATE зі значенням типу TIME неприпустимо;

- як і для функції DATEADD, певні часові відрізки можуть використовуватися тільки з відповідним їм типом.

Наприклад, потрібно для заявок, поданих абонентом з особовим рахунком 115705, вивести кількість тижнів, що минули з дати реєстрації заявки до моменту її виконання. Для цього варто виконати такий запит: SELECT RequestCD, DATEDIFF (WEEKDAY FROM IncomingDate

FOR ExecutionDate) AS Interval FROM Request WHERE AccountCD = 115705 ;. Результат виконання запиту представлений на рис. 3.32.

Можна також перетворювати правильно сформований рядок в тип дата-час. Наприклад, значення з типом дати з трьох значень дня, місяця і року можна отримати наступним чином:

CAST (DAY MONTH YEAR AS DATE), де DAY, MONTH і YEAR можуть являти собою константи або стовпці таблиці, в яких міститься значення дня, місяця або року відповідно.

Наприклад, якщо потрібно вивести різні значення місяця і року нарахувань за послугу газопостачання з кодом 2, віднесені на перше число відповідного місяця, то запит може виглядати наступним чином: SELECT DISTINCT NachislMonth, NachislYear,

CAST (1. NachislMonth. NachislYear as date) as FirstDay

У тих випадках, коли Firebird не може виконати неявне перетворення типів, потрібно виконувати явне перетворення за допомогою функції CAST. Ця функція виробляє перетворення значення виразу, заданого першим аргументом, в тип, заданий другим аргументом. Синтаксис функції:

CAST (<выражение> AS <тип данных>).

В якості типу даних не можна вказувати домени.

Можна використовувати функцію CAST для порівняння стовпців з різними типами даних з однієї і тієї ж таблиці або з різних таблиць.

За допомогою CAST можна виконувати перетворення з одного типу дата / час в інший. У табл. 3.3 представлені правила перетворення [18].

WHERE GazServiceCD = 2 ;.

Результат виконання запиту представлений на рис. 3.33.

Мал. 3.33. Результат роботи функції CAST

Крім того, можна перетворювати числові типи в рядок і навпаки. Наприклад, щоб при виведенні збільшити номер особового рахунку всіх абонентів на 2, потрібно виконати такий запит:

SELECT (CAST (AccountCD AS INTEGER) +2) AS New Acс, Fio

Якщо, наприклад, потрібно вивести значення нарахувань абоненту з номером особового рахунку 115705, округленими до цілого значення, то для цього варто виконати такий запит:

SELECT NachislFactCD, NachislSum,

CAST (NachislSum AS INTEGER) AS RoundSum

Результат виконання запиту представлений на рис. 3.34.

Мал. 3.34. Результат округлення числа до цілого значення за допомогою

Схожі статті