Как вы думаете, какие из приведенных ниже команд содержат ошибку?
INSERT INTO test_bool VALUES ( TRUE, 'yes' );
INSERT INTO test_bool VALUES ( yes, 'yes' );
INSERT INTO test_bool VALUES ( 'yes', true );
INSERT INTO test_bool VALUES ( 'yes', TRUE );
INSERT INTO test_bool VALUES ( '1', 'true' );
INSERT INTO test_bool VALUES ( 1, 'true' );
INSERT INTO test_bool VALUES ( 't', 'true' );
INSERT INTO test_bool VALUES ( 't', truth );
INSERT INTO test_bool VALUES ( true, true );
INSERT INTO test_bool VALUES ( 1::boolean, 'true' );
INSERT INTO test_bool VALUES ( 111::boolean, 'true' );
Проверьте свои предположения практически, выполнив эти команды.
31.* Пусть в таблице birthdays хранятся даты рождения какой-то группы людей. Со-
здайте эту таблицу с помощью команды
CREATE TABLE birthdays
( person text NOT NULL,
birthday date NOT NULL );
Добавьте в нее несколько строк, например:
INSERT INTO birthdays VALUES ( 'Ken Thompson', '1955-03-23' );
INSERT INTO birthdays VALUES ( 'Ben Johnson', '1971-03-19' );
INSERT INTO birthdays VALUES ( 'Andy Gibson', '1987-08-12' );
Давайте выберем из таблицы birthdays строки для всех людей, родившихся в
каком-то конкретном месяце, например, в марте:
WHERE extract( 'mon' from birthday ) = 3;
В этой команде в вызове функции extract имеет место неявное приведение ти-
пов, т. к. ее вторым параметром должно быть значение типа timestamp. Пола-
гаться на неявное приведение типов можно не всегда.
person
| birthday
--------------+------------
Ken Thompson | 1955-03-23
Ben Johnson | 1971-03-19
(2 строки)
Если нам потребуется выяснить, кто из этих людей достиг возраста, скажем, 40
лет на момент выполнения запроса, то команда может быть такой (в последнем
столбце показана дата достижения возраста 40 лет):
Достарыңызбен бөлісу: