如何从此输出中仅获取1月行?
@RequestMapping(value = "/searchEmployee/{firstname}/{lastname}", method = RequestMethod.GET)
public String getEmployeeByName(@PathVariable("name") String Name, @PathVariable("last") String Last, ModelMap modelMap) {
List<Student> student = re.findAllByNameAndLast(Name,Last);
modelMap.addAttribute("message", student);
return "index";
}
答案 0 :(得分:1)
尝试一下:
SELECT to_char(hire_date, 'month') ,
COUNT(employee_id)
FROM employees
WHERE EXTRACT(month FROM hire_date) =1
GROUP BY to_char(hire_date, 'month');
答案 1 :(得分:1)
我认为问题是日期格式掩码不正确。看这个例子:
SQL> select to_char(sysdate, 'month') mon,
2 length(to_char(sysdate, 'month')) len_mon,
3 --
4 to_char(sysdate, 'fmmonth') fmmon,
5 length(to_char(sysdate, 'fmmonth')) len_fmmon
6 from dual;
MON LEN_MON FMMON LEN_FMMON
--------- ---------- --------- ----------
july 9 july 4
SQL>
看到了吗? 'month'
格式掩码会产生'july '
(正确填充长度为9个字符),因此您应该TRIM
或使用其他格式掩码(例如'fmmonth'
),或使用其数字表示形式(1月为“ 1”)。
所以,如果您使用过
where to_char(hire_date,'fmmonth') = 'january'
您可能会得到结果。
答案 2 :(得分:0)
尝试以下操作:
select
to_char(hire_date,'month') as hire_month,
count(employee_id)
from
employees
where
hire_month = 'january'
group by
to_char(hire_date,'month')
答案 3 :(得分:0)
最好的方法是使用直接日期比较:
select 'January', count(employee_id)
from employees
where hire_date >= date '2018-01-01' and
hire_date < date '2018-02-01';
这更好,因为它可以利用employees(hire_date)
上的索引。
还请注意包含年份。当使用几个月时,我们几乎总是希望同时考虑年份。如果您只想获取任何年份的1月数字,请使用to_char()
表达式。