1

我是编程新手,所以可能有一个简单的解决方案来解决我的问题。

我想要完成的是在 MySQL 列中查找重复的字段条目,这些条目将是日期示例01/20/13

我需要搜索日期字段并确定一个日期有多少重复条目,然后在找出我需要创建一个循环的数字后,将日期更改为日期的日期然后添加一个.和后面的数字.

所以例如01/20/13是星期天,所以在我下面的数据库示例中,有 4 个重复的条目,所以输出需要是Sunday.1, Sunday.2, Sunday.3, Sunday.4

我有这个功能在下面的 PHP 程序中工作,但我需要它来搜索 7 天范围示例中的重复项01/20/13 - 01/26/13,从星期日开始到星期六结束。我不想硬编码一周的日期值。这就是我的问题所在,我不知道从哪里开始我被困住了。我只能考虑硬编码数周的值以获得所需的结果,但我知道有一种更简单的方法。

我的PHP代码:

<?php

    require '../TimeCard/DB.php';

    $i = 1;

    try{
    $stmt = $conn->prepare('SELECT `date` FROM `timeRecords` WHERE `employeeID`= 1 ORDER BY date ');
    $stmt->execute();
    } catch(PDOException $e){
        echo'ERROR: ' . $e->getMessage();
    }

    while($row = $stmt->fetch())
  {
    if ($row['date'] == "01/20/13"){

        $date = date("l", strtotime($row['date']));
        $$date = "Hello today is " . $date . "." . $i . "<br>";
        echo $Sunday;
        $i++;
    }
  }

?>

数据库:

+----+------------+----------+--------+-------------------+-----------+------------+-----------+---------+
| id | employeeID | date     | timeIn | jobDescription    | equipType | unitNumber | unitHours | timeOut |
+----+------------+----------+--------+-------------------+-----------+------------+-----------+---------+
| 10 |          1 | 01/20/13 | 20:30  | Blah1             |           | 01E        |      NULL | NULL    |
|  2 |          1 | 01/20/13 | 1:00   | Test              |           | 02S        |      NULL | NULL    |
|  9 |          1 | 01/20/13 | 13:00  | Blah12            |           | 02E        |      NULL | NULL    |
|  8 |          1 | 01/20/13 | 6:00   | Blah              |           | 02D        |      NULL | NULL    |
|  1 |          1 | 01/21/13 | 09:12  | Worked in hubbard | Excavator | 01E        |      8375 | 09:14   |
|  3 |          1 | 01/22/13 |        |                   |           | NULL       |      NULL | NULL    |
|  4 |          1 | 01/23/13 |        |                   |           | NULL       |      NULL | NULL    |
|  5 |          1 | 01/24/13 |        |                   |           | NULL       |      NULL | NULL    |
|  6 |          1 | 01/25/13 |        |                   |           | NULL       |      NULL | NULL    |
|  7 |          1 | 01/26/13 |        |                   |           | NULL       |      NULL | NULL    |
+----+------------+----------+--------+-------------------+-----------+------------+-----------+---------+
4

2 回答 2

0

你的方法似乎太复杂了。查找今天日期的计数并改为指定员工。


SELECT date, COUNT(*) FROM timeRecords 
  WHERE employeeID = 1 AND date BETWEEN DATE_SUB(NOW(),INTERVAL 1 WEEK) AND NOW() 
  GROUP BY date
  ORDER BY date DESC
于 2013-01-21T06:59:01.897 回答
0

尝试这个:

select `date`,DATE_FORMAT(str_to_date(`date`,'%m/%d/%y'),'%W') as ddd from timeRecords where `employeeID` = 1 
and str_to_date('01/20/13','%m/%d/%y') between str_to_date('01/20/13','%m/%d/%y') and date_add(str_to_date('01/20/13','%m/%d/%y'),interval 1 week);

替换所需日期的“01/20/13”的值。

于 2013-01-21T09:40:23.620 回答