SQL показывает что-то после определенного количества дней - PullRequest
0 голосов
/ 06 января 2012

РЕДАКТИРОВАТЬ


Я взял часть кода Эшли Бэнкс и вставил в мой без какого-либо успеха.Я не получаю никаких ошибок, но я также не получаю никаких данных для отображения.мой код выглядит следующим образом: *

    <?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, я знаю, что он не в нужном формате, но он был сделан таким образом), время, meeting_id.

Минуты: minute_id, subject, next_subject, Approval, meeting_id

не показывает никаких данных.это просто повторяет мое сообщение: «У этой встречи еще нет минут»

МОЕ ПОЛЕ ДАТЫ В ТАБЛИЦЕ НОМЕРОВ ФОРМАТА ДАТЫ, А НИКАКОГО ВАРШАРА

Ответы [ 3 ]

0 голосов
/ 06 января 2012

Вы, вероятно, хотите преобразовать свою дату varchar в реальную дату, а затем сравнить ее с 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)
0 голосов
/ 06 января 2012

Попробуйте:

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

Вы должны изменить это в соответствии с вашим полем даты.Это если поле date было DATETIME, если VARCHAR содержит метку времени, вы можете использовать что-то вроде

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

Если ваш VARCHAR содержит дату в виде строки (нехорошая идея в любом случае), используйте UNIX_TIMESTAMP() в поле даты раньше.

Вы должны выполнить некоторое приведение назад и вперед, но с некоторой попыткой, я уверен, вы поймете это

0 голосов
/ 06 января 2012

Это может помочь, пример того, над чем я работал на прошлой неделе:

$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 днейдаты, которую я предоставил (в данном случае вывод из моей базы данных), чтобы вы могли использовать ее для чего угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...