无法通过SQL Query返回任何内容

时间:2014-03-05 18:00:34

标签: mysql sql

我有一个表(作业),我试图在一个时间范围内查询特定的作业。我遇到的困难部分是作业流在日期更改(00:00)上运行。因此,当我输入日期时,我想查看作业流,并且我输入(例如)2014-02-11,逻辑搜索在输入的前一天开始的作业名称(因为作业流在日期更改时运行),然后获取在那里和最终作业之间运行的所有作业(在输入的实际日期)。我写了这个查询:

SELECT job_name, job_start_time, job_end_time 
FROM job WHERE (job_start_time LIKE '2014-02-10%' AND job_name = 'start')
AND (job_end_time LIKE '2014-02-11%' AND job_name = 'end')
ORDER BY job_end_time ASC;

我可以在java中以编程方式执行此操作并解析额外的非作业流相关作业,但我宁愿点击数据库一次,只需要那里需要的数据。我考虑过尝试内部选择,但是从我读过的所有内容中,#1,它们可能代价高昂,#2通常比单个选择更昂贵。

上面的查询返回0结果,我不知道我做错了什么。

2 个答案:

答案 0 :(得分:1)

除了字符串外,不要使用like。所以,首先尝试这个版本:

SELECT job_name, job_start_time, job_end_time 
FROM job
WHERE (date(job_start_time) = date('2014-02-10') AND job_name = 'start') or
      (date(job_end_time) = date('2014-02-11') AND job_name = 'end')
ORDER BY job_end_time ASC;

我还将逻辑更改为or,因为job_name在同一记录中不能同时为startend

答案 1 :(得分:1)

明显的问题是你有job_name = 'start' AND job_name = 'end',只是用其他几个词来区分。 job_name永远不会同时出现两件事,所以你总会得不到任何回报。