что делает следующий SQL-код? - PullRequest
0 голосов
/ 01 декабря 2011

ребята, я видел следующий код в интернете

select round(abs(months_between(sysdate,add_months(hire_date,12*(round((months_between(sysdate,hire_date)/12)))))))
from employees

к сожалению, не было достаточно информации, если что она делает, я выполнил эту команду в моей базе данных oracle 11.g, и увидел, если чиселвроде 6,5,4,7,3,2

5
2
1
1
6
5
2
2
3

вот так, пожалуйста, я знаю функции, просто не могу определить его использование здесь, что представляют собой эти цифры? пожалуйста, помогите мне

Ответы [ 3 ]

7 голосов
/ 01 декабря 2011

Работа изнутри: -

round( (months_between(  sysdate,  hire_date)   /12)

Получает количество полных лет, в которых служащий работал

  add_months( hire_date,12 * (years calculated above )

Получает дату, когда служащий завершил n полных лет с моментазанятости

round(abs(months_between( sysdate, date employee completed n years )

Получает количество месяцев до следующего полного года работы.

Не знаю почему!

2 голосов
/ 01 декабря 2011

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

  • сначала он рассчитал разницу между текущей датой и датой найма и округляет ее до полных лет.
  • затем он добавляет годы (преобразованные в число-месяц) к дате найма, поэтому эта дата будет следующей точкой, когда будет достигнут полный год занятости
  • , по крайней мере, он рассчитываетколичество месяцев между следующим (или последним) моментом времени между настоящим и полным годом занятости

Я думаю, что следующее утверждение должно дать вам тот же результат:

select abs(month_between(sysdate,hire_date)) % 12
0 голосов
/ 01 декабря 2011

это просто получение абсолютной и округленной разницы от даты найма сотрудника до текущей даты.он просто сравнивает текущую дату и дату проката

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...