Справка по SQL (функции даты)

Мне нужна помощь по SQL-запросам. ТАБЛИЦА:

Create Table Employees
        ( employee_id   number(3) Primary Key,
          first_name    varchar2(10),
          last_name varchar2(10),
          dept_code varchar2(3),
          hire_date date,
          credit_limit  number(4,2),
          phone_ext varchar2(4),
          manager_id    number(3)
        );

Записи:

insert into Employees values (201, 'Susan', 'Brown', 'Exe', To_Date('01-Jun-1998','DD-Mon-YYYY'), 30, '3484', null);
insert into Employees values (202, 'Jim', 'Kern', 'Sal', To_Date('16-Aug-1999','DD-Mon-YYYY'), 25, '8722', 201);
insert into Employees values (203, 'Martha', 'Woods', 'Shp', To_Date('02-Feb-2004','DD-Mon-YYYY'), 25, '7591', 201);    
insert into Employees values (204, 'Ellen', 'Owens', 'Sal', To_Date('01-Jul-2003','DD-Mon-YYYY'), 15, '6830', 202);

Мне нужен запрос, чтобы перечислить всех сотрудников, даты их найма и количество дней, которые каждый человек проработал в компании по состоянию на 1 января 2007 года.


person user2804097    schedule 24.01.2016    source источник


Ответы (1)


Вы можете использовать YEAR() в поле даты:

SELECT * FROM Employees WHERE YEAR(hire_date)='2003'

если это не работает, вы можете использовать EXTRACT():

SELECT * FROM Employees WHERE EXTRACT(YEAR FROM hire_date)='2003'

и, как правильно заметил Алан Хадселл:

SELECT COUNT(*) FROM Employees WHERE EXTRACT(YEAR FROM hire_date)='2003'
person gengisdave    schedule 24.01.2016
comment
Поскольку ему нужно количество сотрудников, оно должно быть select count(*), а не select *. Но суть ответа у вас верная. - person Alan Hadsell; 24.01.2016