Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Работа с датами  [new]
WhiteChapel
Member

Откуда:
Сообщений: 1
Помогите пожалуйста с запросом. Есть таблица clients в ней столбцы name, birth_date. Надо найти клиентов у которых день рождения в следующем месяце. Пробовал так, не работает:
SELECT name, birth_date
FROM clients
WHERE MONTH (birth_date) = MONTH (DATE_ADD (NOW(), INTERVAL 1 MONTH));
6 мар 19, 11:01    [21825996]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами  [new]
123йй
Member

Откуда:
Сообщений: 1491
WhiteChapel,
Connected to Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 

SQL> select sysdate,trunc(sysdate,'mm'),trunc(add_months(sysdate,1),'mm')  from dual ;
SYSDATE     TRUNC(SYSDATE,'MM') TRUNC(ADD_MONTHS(SYSDATE,1),'M
----------- ------------------- ------------------------------
06.03.2019  01.03.2019          01.04.2019

SQL> 
6 мар 19, 11:11    [21826010]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1642
WhiteChapel,

  1* select * from emp where mod(extract(month from sysdate),12)+1=extract(month from hiredate)
SQL> /

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7566 JONES      MANAGER         7839 02.04.81       2975                    20

....
stax
6 мар 19, 11:25    [21826024]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами  [new]
Oleg M.Ivanov
Member

Откуда: Москва
Сообщений: 1032
Что-то у топикстартера запрос больше на mysql смахивает. Наверно, веткой ошибся.
6 мар 19, 14:23    [21826325]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами  [new]
Oleg M.Ivanov
Member

Откуда: Москва
Сообщений: 1032
Поскольку, правая часть условия запроса ТС возвращает правильно 4, то я бы посоветовал выполнить такой селект и посмотреть, что будет возвращать MONTH (birth_date). Есть предположение, что birth_date в базе хранится не в виде даты, а в строке.
SELECT name, birth_date, MONTH (birth_date) FROM clients

...но это чисто предположение, т.к. mysql'ем уже очень давно не занимался и не помню, будет ли выдавать ошибку в таком случае или просто не работать как надо.
6 мар 19, 15:43    [21826424]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить