postgresql - API 结果与 SQL 查询不同的响应
问题描述
const amIAvailable = (request, response) => {
const { start_date, end_date, my_emp_id } = request.body;
console.log(request.body, 'body')
pool.query(
`
SELECT EXISTS (SELECT me.employee_id from (
select counts.employee_id from
(select e.employee_id, count(e.employee_id) review_count from emp_details_2 e
left join project_allocation pa
on e.employee_id = pa.employee_id
left join project pr
on pa.pid = pr.pid
where pa.project_alloc_status='In Progress' AND pr.start_date NOT BETWEEN $1 AND $2
and pr.end_date NOT BETWEEN $1 AND $2
group by (e.employee_id))
counts
inner join role_allocation ra
on counts.employee_id = ra.employee_id
where counts.review_count <= ra.inclusive_review) me
where me.employee_id = $3)
`, [start_date, end_date, my_emp_id],
(error, results) => {
if (error) {
throw error;
}
response.status(200).json(results.rows);
console.log(results.rows, 'result')
}
);
};
我已经编写了这个返回false
特定日期的 API...但是当我在 pgadmin 中使用相同的值参数运行相同的查询时,它会返回true
我无法理解这种行为。日期采用MM/DD/YYYY
格式。
解决方案
可能原因是处理日期字符串的方式。替换此查询行
and pr.end_date NOT BETWEEN $1 AND $2
使用这个(即使字符串到日期的转换显式和受控)
and pr.end_date NOT BETWEEN to_date($1, 'MM/DD/YYYY') AND to_date($2, 'MM/DD/YYYY')
我建议无论何时涉及日期、时间戳、时区或编码,您始终使用明确的设置/规则,并且永远不要依赖默认值。
推荐阅读
- html - 一次发送数据以在 select2 中使用 ajax 查看或查询远程数据
- jquery - 禁用 jquery 上的单选按钮
- javascript - 如何在 JavaScript 字符串中加粗部分文本
- react-native - react-native 组件在更新 redux 状态后不会重新渲染
- ruby-on-rails - 创建时委托值抛出错误-Rails 5.2.2
- acumatica - 如何限制对记录所有者的维护笔记和附件的访问?
- java - 如何只静音来电铃声而不静音短信
- python - python 3 import 导入过多
- node.js - node-soap 客户端:如何设置超时和保持活动?
- swift - if 语句条件中使用的变量无法识别