从日期到日期 - 搜索和显示

时间:2013-02-19 12:20:33

标签: php mysql sql case

我有一个包含两位信息的数据库。从日期到日期。我需要这个条目每天出现在我的日历中,但我只能设法出现在第一个和最后一个日期。

DB的例子:

   job_no | date1(from)| date2(to)
   ________________________________
   1      |2013-01-28  | 2013-02-03
   2      |2013-01-14  | 2013-01-18

编辑问题。我有一个日期输入的搜索栏,日历通过date1和接下来的6天查找条目。

我无法进行包含两个日期输入的搜索,因为我的用户已经习惯了这种方式而且我不想增加搜索时间。我开始认为我必须找到日期之间的日期,将其添加到array然后使用if statement来查找匹配项......但即使这样说对我也没有意义。

关于工作1,我需要我的日历在28/29/30/31/01/02/03的所有日期显示这项工作。

我当前的搜索SELECT * FROM jobs WHERE date1='$searchinput' PER日期和日历此搜索。我使用strtotime将输入日期增加+1以添加到每天的搜索中。

日历页面。

我想要的结果。用户搜索日期28日。

 Mon 28          |      Tues 29     |    Wed 30     ...... | Fri 03    |
_________________________________________________________________________
   Job no 1      |      job no 1    |   job no 1    ...... | job no 1

我现在拥有的。

  Mon 28       |      Tues 29     |    Wed 30     ...... | Fri 03    |
    _________________________________________________________________________
 Job no 1      |      blank       |      blank           | job no 1

现在每天都有一个新的选择查询。它与日期1和日期2相匹配。我不需要像以前一样我只在一天内完成工作,现在他们出去超过一天,并且需要在所有日子里注意到的工作仅通过使用从日期和工作到目前为止的工作。

编辑2:

SELECT * FROM calender_db NATURAL JOIN job_db 
WHERE section='two' 
AND date1 < '$day' AND date2 > '$day' 
OR date1 = '$day' OR date2 = '$day' 

此查询选择我需要的内容,但是当我使用OR时,第一个WHERE CLAUSE可以为null。我需要始终在条款中。我一直在考虑使用IIFCASE来纠正,但不是如何实现100%......?

6 个答案:

答案 0 :(得分:5)

为什么不使用BETWEEN

SELECT * FROM tableName WHERE date BETWEEN 'date1' AND 'date2'

更新1

SELECT * 
FROM tableName 
WHERE date BETWEEN '2013-01-28' AND '2013-01-28' + INTERVAL 6 DAY

答案 1 :(得分:1)

生成两个日期之间的天数列表:

$days = array();
$stop = strtotime($date2);
for ($current = strtotime($date1); $current <= $stop; $current = strtotime('+1 days', $current)) {
    $days[] = date('d', $current);
}
echo join('/', $days);

Demo

<强>更新

误解了看起来的问题,如果两个日期都存储为列,并且您使用单个日期进行查询:

SELECT *
FROM jobs 
WHERE 'date_from_input' BETWEEN date1 AND date2

更新2

您的最新查询可以写成:

SELECT * 
FROM calender_db NATURAL JOIN job_db 
WHERE section='two' AND '$day' BETWEEN date1 AND date2

答案 2 :(得分:0)

试试这个

SELECT * FROM Mytimetable WHERE date BETWEEN 'date1' AND 'date2'

答案 3 :(得分:0)

在date1 - date2

之间进行查询
SELECT *
FROM `objects`
WHERE (date_field BETWEEN '2013-01-30 14:15:55' AND '2013-02-19 10:15:55')

OR

SELECT *
FROM `objects`
WHERE (date_field BETWEEN date1 AND date2)

答案 4 :(得分:0)

使用PHP变量查询两个日期之间的日期。 我将用exapmle解释:

$ date1 =“2013-02-19”; $ date2 =“2013-02-25”;

然后sql查询将是:

$query  = " SELECT * FROM table_xyz where (date_item BETWEEN date('".$date1."') AND date('".$date2."')";

希望它能解决你的问题

答案 5 :(得分:0)

eviter