Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МДК02.02 Лекция 2_1.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
61.71 Кб
Скачать

2.3. Логические данные

В этой части математической логики данные имеют только два значения - ИСТИНА и ЛОЖЬ, обозначаемые как true и false соответственно. Данные логического типа получаются в результате операций сравнения. Например, результатом вычис­ления выражения 3 < 5 является ИСТИНА, а выражения 2 + 3= 10 -ЛОЖЬ.

В SQL тип данных BOOLEAN (булевский) имеет три значения - true, false и unknown. Значение unknown (неизвестное) было вве­дено для обозначения результата, получающегося при сравнении со значением NULL (неопределенное). Если пользователь еще не ввел в ячейку таблицы никакого значения, то эта "пустая" ячейка содержит значение null, интерпретируемое как неизвестное или неопределенное значение.

Результатом любой операции сравнения true или false с NULL или с unknown всегда является unknown.

В SQL-выражениях логические значения заключаются в кавычки, например, 'true' или 'true'.

2.4. Дата и время

Тип DATA (дата) предназначен для хранения значений даты, эле­менты которых расположены в следующем порядке: год (4 цифры), дефис (-), месяц (2 цифры), дефис, день (2 цифры). Таким образом, значения даты занимают 10 позиций, например,

2005-10-02.

Данные этого типа могут содержать любую дату с 0001 года по 9999 год.

Для представления времени предусмотрены два типа:

TIME WITHOUT TIME ZONE (время без часового пояса) предна­значен для хранения значений времени, элементы которых расположены в следующем порядке: часы, двоеточие, минуты, двоеточие, секунды. Часы и минуты представляются двумя цифрами, а секунды могут быть представлены двумя и более цифра­ми (если требуется дробная часть), например 18:35:19.547. Длина дробной части секунд зависит от реализации, но внут­реннее представление времени должно иметь не менее 6 цифр. По умолчанию время данного типа представляют без дробной части секунд. Чтобы указать, что время должно быть пред­ставлено с n цифрами после разделительной точки, достаточно использовать такой синтаксис: TIME WITHOUT TIME ZONE (n). Например, чтобы кроме секунд указывались еще и миллисе­кунды, следует определить тип как TIME WITHOUT TIME ZONE(3). Длина данных рассматриваемого типа без дробной части равна 8 символам, а с дробной частью - 9 плюс коли­чество цифр после разделительной точки. Для задания време­ни без указания часового пояса с использованием установок по умолчанию можно использовать короткий синтаксис - TIME;

TIME WITH TIME ZONE (время с часовым поясом) - такой же тип данных, как и time WITHOUT TIME ZONE. Отличие заклю­чается лишь в том, что к значению времени добавляется еще и информация о разности между местным и всемирным вре­менем. Всемирное время (Universal Time Coordinated, UTC) - это время по Гринвичу, т. е. время нулевого меридиана, про­ходящего через г. Гринвич в Великобритании (Greenwich Mean Time, GMT). Значение разности между локальным и всемирным временем находится в диапазоне от -12:59 до 13:00. Длина данных рассматриваемого типа равна длине дан­ных типа TIME WITHOUT TIME ZONE плюс 6, поскольку допол­нительная информация о разности времен занимает 6 позиций (дефис, знак (+) или (-), 2 цифры для часов, двоеточие, 2 цифры для минут).

Для одновременного представления даты и времени служат сле­дующие два типа:

TIMESTAMP WITHOUT TIME ZONE (дата и время без часового поя­са). Элементы данных этого типа имеют такие же характери­стики, как и для данных типа DATE и TIME WITHOUT TIME ZONE, за исключением одного: данные типа TIMESTAMP WITHOUT TIME ZONE пo умолчанию имеют 6 цифр в дробной части се­кунд, а не 0, как в типе TIME WITHOUT TIME ZONE. Для указания количества цифр в дробной части используется синтаксис TIMESTAMP WITHOUT TIME ZONE (n). Если дробной части нет, то данные занимают 19 позиций: 10 позиций для даты, один пробел и 8 позиций для времени. Если определена дробная часть, то длина данных равна 20 плюс количество цифр в дроб­ной части секунд;

TIMESTAMP WITH TIME ZONE (дата и время с часовым поя­сом) - такой же тип данных, как и TIMESTAMP WITH TIME ZONE. Отличие состоит в том, что к значению времени добав­ляется еще и информация о разности между местным и все­мирным временем (см. TIME WITH TIME ZONE). Дополнитель­ная информация занимает 6 позиций. Данные типа TIMESTAMP WITH TIME ZONE без дробной части занимают 25 позиций, с дробной частью - 26 плюс количество цифр в дробной час­ти секунд.

Чтобы представить в SQL-выражении дату, время или дату-время, необходимо использовать функцию CAST() приведения к заданному типу. Допустим, в таблице продажи имеется столбец дата типа DATA. Чтобы получить сведения из этой таблицы за пе­риод после 2005-09-30, следует выполнить такой запрос:

SELECT * FROM Продажи WHERE Дата > CAST('2005-09-30' AS DATE);

Здесь строка, содержащая дату, приводится к типу DATA, и полу­ченный результат участвует в операции сравнения с данными столбца Дата.

В языке SQL имеются три функции, которые возвращают теку­щие дату и время:

CURRENT_DATE - возвращает текущую дату (тип DATE). На­пример, 2005-06-18;

CURRENT_TIME(число) - возвращает текущее время (тип TIME). Целочисленный параметр число указывает точность представления секунд. Например, при число = 2 секунды бу­дут представлены с точностью до сотых (две цифры в дробной части): 12:39:45.27;

CURRENT_TIMESTAMP(число) - возвращает дату и время (тип TIMESTAMP), например 2005-об-18 12:39:45.27. Целочис­ленный параметр число указывает точность представления секунд.