1

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

数据库示例:

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

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

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

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

我当前的搜索SELECT * FROM jobs WHERE date1='$searchinput'每天和日历此搜索。我使用 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 时,第一个WHERECLAUSE 可以为空。我需要它始终在条款中。我一直在考虑使用IIFCASE纠正但不知道如何实现 100%...?

4

6 回答 6

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
于 2013-02-19T12:21:50.550 回答
1

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

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

演示

更新

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

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
于 2013-02-19T12:28:14.213 回答
0

像这样试试

SELECT * FROM Mytimetable WHERE date BETWEEN 'date1' AND 'date2'
于 2013-02-19T12:22:54.363 回答
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)
于 2013-02-19T12:23:25.020 回答
0

查询以使用 PHP 变量选择两个日期之间的日期。我会用例子来解释:

$date1 = "2013-02-19"; $date2 = "2013-02-25";

那么sql查询将是:

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

希望它能解决你的问题

于 2013-02-19T12:35:59.790 回答
0
SELECT 
   * 
FROM 
   tablename 
WHERE 
   date between '$date1' and '$date2' 
order by 
  date
于 2019-03-20T12:51:21.967 回答