W Cat - SQL за 24 часа
- Название:SQL за 24 часа
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - SQL за 24 часа краткое содержание
SQL за 24 часа - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
DATE 4999-12-31' + INTERVAL Ч' DAY
'2000-01-01'
DATE 4999-12-31' + INTERVAL '!' MONTH
'2000-01-31'
В следующем примере используется функция DATEADD SQL Server.
SELECT DATEJHIRE, DATEADD(MONTH, 1, DATE_HIRE)
FROM EMPLOYEE_PAY_TBL
DATE_HIRE DATEADD(M)
23-MAY-89 23-JUN-89
17-JUN-90 17-JUL-90
14-AUG-94 14-SEP-94
28-JUN-97 28-JUL-97
22-JUL-96 22-AUG-96
14-JAN-91 14-FEB-91
6 rows affected.
В следующем примере используется функция ADD_MONTH Oracle.
SELECT DATEJHIRE, ADD_MONTH(DATE_HIRE,1)
FROM EMPLOYEE_PAY_TBL;
DATE_HIRE ADD_MONTH
23-MAY-89 23-JUN-89
17-JUN-90 17-JUL-90
14-AUG-94 14-SEP-94
28-JUN-97 28-JUL-97
22-JUL-96 22-AUG-96
14-JAN-91 14-FEB-91
6 rows selected.
Чтобы добавить к дате один день в Oracle, используется следующий оператор.
SELECT DATE_HIRE, DATE_HIRE + 1
FROM EMPLOYEE_PAY_TBL
WHERE EMP_ID = '311549902';
DATE_HIRE DATE_HIRE
23-MAY-89 24-MAY-89 1 row selected.
Обратите внимание на то, что эти примеры из Oracle и SQL Server хотя и отличаются синтаксически от стандарта ANSI, по сути базируются на тех же принципах, что и стандарт SQL.
Очень полезным условным оператором стандарта SQL для значений типа DATETIME является оператор OVERLAPS. Оператор OVERLAPS используется для сравнения двух отрезков времени и возвращает TRUE (Истина), если эти отрезки времени пересекаются, и FALSE (Ложь) - если нет. Например, в результате следующего сравнения возвращается значение TRUE:
(TIME '01:00:00', TIME '05:59:00')
OVERLAPS
(TIME '05:00:00', TIME '07:00:00')
В результате следующего сравнения возвратится значение FALSE:
(TIME '01:00:00', TIME '05:59:00')
OVERLAPS
(TIME '06:00:00', TIME '07:00:00')
В следующем списке представлены некоторые полезные функции для работы с датами, предлагаемые реализациями Oracle и SQL Server.
DATE PART Возвращает числовое (целое) значение DATE PART для даты
DATENAME Возвращает текстовое значение DATEPART для даты
GETDATE () Возвращает системную дату
DATEDIFF Возвращает разность двух дат для указанных компонентов,
таких как дни, минуты или секунды
NEXT_DAY Возвращает для указанной даты следующий день недели в
заданном виде(например, ПЯТНИЦА)
MONTH_BETWEEN Возвращает число месяцев между двумя заданными датами
Преобразования дат могут понадобиться по ряду причин. Главным образом, преобразования дат используются для изменения типа данных, изначально определенных по умолчанию как DATETIME или как-нибудь иначе в зависимости от реализации SQL.
Вот несколько типичных причин, по которым применяются преобразования дат:
• необходимость сравнения значений дат разных типов;
• необходимость представления значений дат в виде строк заданного формата;
• необходимость конвертирования символьных строк в формат даты.
Для конвертирования одних типов данных в другие используется ANSI-оператор CAST. Его базовый синтаксис следующий.
CAST ( выражение AS новый тип данных )
Конкретные примеры использования этого операторы будут показаны в следующих разделах.
Шаблон представления даты (date picture) состоит из элементов форматирования и используется для извлечения из базы данных информации о дате и времени в требуемом виде. В некоторых реализациях SQL использование шаблонов представления дат не предусмотрено.
Без использования форматирования информация о дате и времени извлекается из базы данных в определенном принятом по умолчанию виде, например,
1999-12-31
31-DEC-99
1999-12-31 23:59:01.11
Но как быть, если дату нужно представить, например, в следующем виде?
December 31, 1999
Тогда необходимо конвертировать дату из формата DATETIME в символьный. Это делается с помощью соответствующих функций, применение которых будет рассматриваться в следующих разделах.
Шаблоны представления дат Sybase
УУ год
qq квартал
mm месяц
dy день года
wk неделя
dw день недели
hh час
mi минута
ss секунда
ms миллисекунда
Шаблоны представления дат Oracle _____________________________
AD Н. Э.
AM ДО ПОЛУДНЯ
ВС ДО Н. Э.
CC столетие
D номер дня недели
DD номер дня месяца
DDD номер дня года
DAY название дня недели (MONDAY)
Day название дня недели (Monday)
day название дня недели (monday)
Шаблоны предстявления дат Oracle |
|
DY Dy dy HH НН12 НН24 J MI MM MON Mon mon MONTH Month month PM Q KM RR 3 SSSSS SYYYY W WW Y YY YYY YYYY YEAR Year year |
трехбуквенное сокращение для дня недели (MON) трехбуквенное сокращение для дня недели (Моп) трехбуквенное сокращение для дня недели (топ) час дня час дня час дня в 24-часовом формате день по юлианскому календарю с 12-31-4713 до н. э. минута часа номер месяца трехбуквенное сокращение для месяца (JAN) трехбуквенное сокращение для месяца (Jan) трехбуквенное сокращение для месяца (Jan) название месяца (JANUARY) название месяца (January) название месяца (January) после полудня номер квартала римский номер месяца две цифры года секунда минуты число секунд со времени полуночи год со знаком: например, 500 г. до н. э. = -500 номер недели месяца номер недели года последняя цифра года последние две цифры года последние три цифры года год год словами (NINETEEN-NINETY-NINE) год словами (Nineteen-Ninety-Nine) год словами (nineteen-ninety-nine) |
Значения типа DATETIME конвертируют (преобразуют) в символьные строки для того, чтобы иметь возможность изменить представление дат при выводе данных запроса. Для этого используются функции преобразования. Вот пример преобразования значения даты и времени в символьную строку в запросе SQL Server:
SELECT DATE_HIRE = DATENAME(MONTH, DATE_HIRE)
FROM EMPLOYEE_PAY__TBL
DATE_HIRE
May
June
August
June
July
January
6 rows affected.
В следующем примере для преобразования используется функция TO_CHAR из Oracle:
SELECT DATE_HIRE, TO_CHAR(DATE_HIRE,'Month dd, yyyy') HIRE
FROM EMPLOYEE_PAY_TBL;
DATE_HIRE HIRE
23-MAY-89 May 23, 1989
17-JUN-90 June 17, 1990
14-AUG-94 August 14, 1994
28-JUN-97 June 28, 1997
22-JUL-96 July 22, 1996
14-JAN-91 January 14, 1991
6 rows selected.
Следующий пример иллюстрирует один из способов преобразования символьной строки в формат даты. После преобразования соответствующие данные можно сохранить в столбце, имеющем атрибут типа DATETIME.
SELECT TO_DATE('JANUARY 01 1999','MONTH DD YYYY')
FROM EMPLOYEE_PAY_TBL;
TO_DATE('
Ol-JAN-99
Ol-JAN-99
Ol-JAN-99
Ol-JAN-99
Ol-JAN-99
Ol-JAN-99
6 rows selected.
Вы, наверное, обратили внимание на то, что в выводе запроса представлены 6 строк, хотя в условии предлагается только одна дата. Такой результат получен по причине того, что преобразование выбиралось для данных таблицы EMPLOYEE_PAY_TBL, в которой шесть строк. Преобразование выполнялось для каждой из строк таблицы.
Читать дальшеИнтервал:
Закладка: