【发布时间】:2021-04-06 19:23:06
【问题描述】:
我需要在一个季度的最后一个月获得上半年雇用的员工 就像我需要在第 9 个月和第 12 个月从(1/3 到 15/3)和(1/6 到 15/6)雇用的员工一样
【问题讨论】:
标签: oracle date-format
我需要在一个季度的最后一个月获得上半年雇用的员工 就像我需要在第 9 个月和第 12 个月从(1/3 到 15/3)和(1/6 到 15/6)雇用的员工一样
【问题讨论】:
标签: oracle date-format
您可以使用MONTHS_BETWEEN 和TRUNC:
如果您想要hire_date 的时刻在该季度第三个月的上半月的行,那么:
SELECT *
FROM hr.employees
WHERE MONTHS_BETWEEN( hire_date, TRUNC( hire_date, 'Q' ) ) BETWEEN 2 AND 2.5;
如果您想要hire_date 的整日在该季度第三个月的上半月内的行,则:
SELECT *
FROM employees
WHERE MONTHS_BETWEEN(
TRUNC( hire_date ) + INTERVAL '23:59:59' HOUR TO SECOND,
TRUNC( hire_date, 'Q' )
) BETWEEN 2 AND 2.5;
或者,如果您想手动设置边界:
SELECT *
FROM employees
WHERE EXTRACT( MONTH FROM hire_date ) IN ( 3, 6, 9, 12 )
AND EXTRACT( DAY FROM hire_date ) BETWEEN 1 AND 15;
db小提琴here
【讨论】:
hire_date 时刻在三月、六月、九月和十二月的上半月的行;第二个查询返回整个hire_date 日在三月、六月、九月和十二月的上半月内的行。这似乎是您的要求所要求的,我不确定您所说的是错误的。如果您对该问题的规范有疑问,请edit 澄清您的问题。