SQL在一定数量的天后显示某些东西

时间:2012-01-06 15:55:42

标签: php mysql date

修改


我已经采取了一些Ashley Banks代码并插入我的内容但没有任何成功。我没有收到任何错误,但我也没有收到任何数据。我的代码如下::

    <?php
$id = $_GET['meeting_id'];
$from = date( 'Y-m-d', strtotime( $row['date_update'] . '-7 days' ) ); 

$result = mysql_query('SELECT * FROM Meetings LEFT JOIN Minutes ON Meetings.meeting_id = Minutes.meeting_id 

INNER JOIN Rooms ON Meetings.meeting_id = Rooms.meeting_id 

WHERE  Rooms.date >= "' . $from . '" AND Rooms.date <= NOW() AND Minutes.approval = "approved" AND Meetings.meeting_id = "$id"')

or die(mysql_error());

if (mysql_num_rows($result) == 0) {
       echo '<h3>There Arent Any Minutes For This Meeting Yet</h3>';
    } else {

while($info = mysql_fetch_array($result))
{

        echo "<tr>";
        echo "<td><br/>" .'Title: '. $info['title']." </td>";
        echo "<td><br/><br/>" .'Subject: '. $info['subject']. "</td>";
        echo "<td><br/><br/>" .'Next Subject: '. $info['next_subject']."</td>";

        echo '<br/><br/><a href="attendees.php?meeting_id=' . $info['meeting_id'] . '" target="_blank">Attendees</a>';
        echo '&nbsp;|&nbsp;<a href="apologies.php?meeting_id=' . $info['meeting_id'] . '" target="_blank">Apologies</a>';



        }
    }
echo "</tr>";
echo "</table>";


?>

请记住,这些是我的表格和字段:

会议:meeting_id,职称,主席,秘书,tof,出现,行动

房间:room_id,房间,日期(这是在varchar字段中,我知道它的格式不正确,但它是这样的),time,meeting_id。

分钟:minute_id,subject,next_subject,approval,meeting_id

它没有显示任何数据。它只是回应我的信息,“这次会议还没有任何会议记录”

我在房间里的日期字段现在是日期格式,而不是任何变种

3 个答案:

答案 0 :(得分:0)

这可能会有所帮助,例如我上周正在处理的事情:

$from = date( 'Y-m-d', strtotime( $row['date_update'] . '-15 days' ) ); 

$query = $this->db->get ( 'SELECT * FROM table WHERE table_date >= "' . $from . '" AND table_date <= NOW() ORDER BY table_date DESC' );

这只是一个简短的例子,但它会在两个日期之间找到结果,将$ from设置为我提供的日期的15天(在这种情况下是我的数据库的输出),所以你可以用它来做任何东西。

答案 1 :(得分:0)

您可能希望将varchar“date”转换为实际日期,然后将其与curdate() - 7天进行比较。 请参阅:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

结束这样的事情:

AND str_to_date(Meetings.date,'%d,%m,%Y') > date_sub(curdate(), interval 7 day)

答案 2 :(得分:0)

尝试:

SELECT *
FROM Minutes m, Rooms r
WHERE
    m.meeting_id = r.meeting_id AND
    r.date > DATE_SUB(CURDATE(),INTERVAL 7 DAY)

您必须根据日期字段进行更改。如果日期是DATETIME字段,如果它是包含时间戳的VARCHAR,则可以使用类似

的字段
CAST(r.date AS UNSIGNED) > UNIX_TIMESTAMP()-7*24*60*60

如果您的VARCHAR包含日期字符串(无论如何都不是一个好主意),请在之前的日期字段中使用UNIX_TIMESTAMP()

你必须来回做一些铸造,但有一些尝试我肯定你会得到它的悬念