Список реквизитов старшего сотрудника относится к определенному году - PullRequest
0 голосов
/ 07 октября 2019

Я хочу получить в sqlite:

Список деталей старшего сотрудника принадлежит 1981

Но

select  *  from emp where hiredate in (select min(hiredate) from emp   
where  to_char( hiredate,’YYYY’) = ‘1981’)

неработает. Я полагаю, функция to_char не распознается.

Я пытался

select min(hiredate) from table   
where hiredate IN ('1981%') 

результат NULL

Я упоминаю дату в формате, поддерживаемом sqlite;yyyy-mm-dd

Заранее спасибо! :))))

Ответы [ 3 ]

0 голосов
/ 07 октября 2019

Если вы хотите самую раннюю дату найма в 1981 году, просто используйте

SELECT *
FROM emp
WHERE hiredate LIKE '1981-%'
ORDER BY hiredate
LIMIT 1;

, которая сортирует все строки с датами проката 1981 года по этой дате и возвращает только первую (минимальную) дату.

0 голосов
/ 08 октября 2019

Вместо to_char () вы можете использовать функцию strftime. strftime ('% Y', hiredate)

SELECT MIN(hiredate) FROM table WHERE STRFTIME ('% Y', hiredate) = '1981'

0 голосов
/ 07 октября 2019

Я предполагаю, что формат hiredate - YYYY-MM-DD, поскольку это единственный формат, который напрямую сопоставим и может манипулировать как дата в SQLite (хотя на самом деле это TEXT). Если это так, то используйте оператор LIKE, например:

select * from emp 
where hiredate = (select min(hiredate) from emp where hiredate like '1981%')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...