выберите месяц согласно номеру даты его приема на работу - PullRequest
0 голосов
/ 30 ноября 2011

предположим, что в базе данных oracle 11.g мы пытаемся добавить нового сотрудника, если мы наняли (скажем так) в любой день, меньший 15 текущего месяца, тогда мы напишем hiredate для него как текущий месяциначе в следующем месяце, например, предположим, что сейчас декабрь, если когда я нанял нового сотрудника меньше 15 декабря, то месяц его найма будет таким же декабрем, но в случае более 15, например 15,16, ии так, тогда его hire_month будет в январе, как я могу определить, чьи сотрудники нанимаются более чем на 15 человек в месяц?большое спасибо

Ответы [ 3 ]

3 голосов
/ 30 ноября 2011

Попробуйте:

SELECT (CASE 
           WHEN EXTRACT(day FROM hiredate) < 15
           THEN EXTRACT(month FROM hiredate)
           ELSE (EXTRACT(month FROM hiredate) + 1)
         END) AS HireMonth
  FROM employee
 WHERE empno = <your number>

Если вы хотите месяц по имени, то:

SELECT (CASE 
           WHEN EXTRACT(day FROM hiredate) < 15
           THEN TO_CHAR(hiredate, 'Month')
           ELSE TO_CHAR(ADD_MONTHS(hiredate, 1), 'Month')
         END) AS HireMonth
  FROM employee
 WHERE empno = <your number>

РЕДАКТИРОВАТЬ: Поскольку вы не можете использовать CASE, то здесь есть альтернатива (хотя этогораздо лучше использовать CASE ):

SELECT TO_CHAR(hiredate, 'Month') AS hireMonth
  FROM employee
 WHERE EXTRACT(day FROM hiredate) < 15
   AND empno = <your number>
 UNION ALL
SELECT TO_CHAR(ADD_MONTHS(hiredate, 1), 'Month') AS hireMonth
  FROM employee
 WHERE EXTRACT(day FROM hiredate) >= 15
   AND empno = <your number>

Надеюсь, это поможет ...

1 голос
/ 30 ноября 2011

поиск функции Oracle to_char.Это позволит вам извлекать определенные значения из даты.

to_char (data_value, 'DD') даст вам, например, день месяца.

0 голосов
/ 30 ноября 2011

Вы можете использовать функцию ROUND, например так:

select round(<yourdate>, 'MONTH') hire_month from dual
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...