Первый день недели принимает значения: 1 – 7 (1 – Воскресенье), по умолчанию – 1.
Первая неделя года принимает значения:
1 – неделя, которая содержит 1 января,
2 – неделя, в которой не менее 4 дней,
3 – первая полная неделя.
Пример. Издания, опубликованные в третьем квартале. (Запрос Publish_Quater)
SELECT title_name, pubdate, Datepart('q',pubdate) AS Квартал
FROM title
WHERE (Datepart('q',pubdate)) = 3
ORDER BY pubdate DESC;
Все коммерческие СУБД предлагают дополнительные функции для работы с датой.
Пример. Издания, опубликованные в течение указанного количества месяцев от заданной даты. (Запрос Publish_X-Month_from-Y-Date)
SELECT title_name, pubdate
FROM title
WHERE pubdate Between #1/1/2000# And DateAdd("m",9,#1/1/2000#)
ORDER BY pubdate DESC;
Пример. Функция DateDiff вычисляет интервал между датами (см. запросы IntervalDates и IntervalDates_1). Аргументы функции аналогичны DatePart. Количество недель за прошедший период вычисляется двумя способами: количество воскресений (первый аргумент “ww”) либо количество дней недели, соответствующих начальной дате (“w”).
Период после публикации (в днях) (Запрос IntervalDates):
SELECT title_name, pubdate, Date()-pubdate, DateDiff('d',pubdate,Date())
FROM title
ORDER BY pubdate DESC;
Зад. Постройте запрос, вычисляющий количество недель между датами. Например, публикации, за некоторое количество недель перед определенной датой.
Пример. Издания, опубликованные в первом полугодии. (Запрос First_Half-Year)
SELECT title_name,
pubdate
FROM title
WHERE (Year(pubdate)) Between 2001 And 2002) AND
(Month(pubdate)) Between 1 And 6)
ORDER BY pubdate DESC;
Зад. Постройте запрос «Заказы, сделанные в выходные».
Функции текущей даты/времени различаются в разных СУБД. В Access применяются Date(), Time(), Now().
Допустим запрос вида:
SELECT Date() AS 'ДАТА', Time() AS 'ВРЕМЯ', Now() AS 'ДАТА + ВРЕМЯ';
Выражение Case включено в стандарт SQL-92. Основное назначение – заменять коды или аббревиатуры. Имеет два формата:
- произвольный – сравнивает результат вычисления выражения с простыми выражениями из перечня и выдает один из альтернативных вариантов;
CASE выражение
WHEN значение1 THEN значение 1
WHEN значение2 THEN значение 2
…
[ ELSE значение ]
END
Если конструкция ELSE опущена, но ни одно из значений не является результатом вычисления выражения, результатом является значение NULL.
- поисковый – вычисляет условные выражения и формирует результат соответствующий истинному значению.
CASE
WHEN условие1 THEN значение 1
WHEN условие 2 THEN значение 2
…
[ ELSE значение ]
END
Пример. Переоценка книг по категориям. CASE применяется для формирования вычислимого поля запроса.
SELECT title_name,
type,
price,
CASE type
WHEN ‘history’ THEN price*1,1
WHEN ‘psychology’ THEN price*0,9
ELSE price
END
AS ‘New_price’
FROM title
ORDER BY type ACS, ‘New_price’ DESC;
Примечание. В Access не поддерживается конструкция CASE. Вместо нее применяется функция Switch. (Запрос NewPrice-Switch)
SELECT title_name,
type,
price,
Switch(type="history",price*1.1,
type="psychology",price*0.9,
type In ("biography","computer","children"),price)
AS "New_price"
FROM title
ORDER BY type, 4 DESC;
Пример. Расположить книги по объемам продаж. (Запрос CategorySales-Switch)
SELECT title_name,
Switch(sales<1000, "Менее 1000",
sales< 10000, "От 1000 до 10000",
sales < 100000, "От 10 000 до 100 000",
sales < 1000000,"От 100 000 до 1 000 000",
sales >= 100000, "Не менее 1 000 000") AS "Категория продаж"
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.