我怎么能忽略NOW()的时间?

时间:2009-09-09 02:12:40

标签: php mysql sql

  

我有一个条目的mysql数据库   与约会。所以我想要的是展示   我数据库中的所有日期然后   在每个日期之下,我想要展示所有   输入的数据库中的条目   特殊日期。我在想   两个循环,但我不知道如何   写条件显示所有   在我循环之前在我的数据库中的日期   该日期下的参赛作品。

<?php

$sql = 'select start_date, name from events order by start_date';

$res = mysql_query($sql) or die(mysql_error());

$prev_date = null;

while ($row = mysql_fetch_assoc($res)) {   if ($row['start_date'] != $prev_date) {
    echo "<h1>{$row['start_date']}</h1>"\n;
    $prev_date = $row['start_Date'];   }

  echo "<p>{$row['name']}</p>"; }

?>

在上一个问题(Looping out mysql data)中,我导致使用此代码。它从MYSQL中提取日期和时间,并使用NOW()来存储日期和时间。如何让它忽略时间,以便达到我的目的?

5 个答案:

答案 0 :(得分:1)

使用CURDATE()代替NOW()。

答案 1 :(得分:1)

正如David Andres在评论中提到的那样,DATE()提取日期或日期时间表达式的日期部分。所以你可以做到以下几点:

<?php

$sql = 'SELECT DATE(start_date) AS start_date_date, name FROM events ORDER BY start_date';

$res = mysql_query($sql) or die(mysql_error());

$prev_date = null;

while ($row = mysql_fetch_assoc($res)) {
  if ($row['start_date_date'] != $prev_date) {
    echo "<h1>$row[start_date_date]</h1>\n";
    $prev_date = $row['start_date_date'];
  }

  echo "<p>$row[name]</p>";
}

答案 2 :(得分:0)

尝试使用这样的条件:

SELECT * FROM `events` WHERE DATE(`start_date`) = '2009-09-09';

这将为您提供2009年9月9日数据库中的所有活动。我认为这就是您所要求的,是吗?

答案 3 :(得分:0)

我可能需要有人纠正的未经测试的代码,但这里有:

用于检索表中存在的所有日期的SQL:

$sql_get_dates = 'select start_date from events order by start_date distinct';

并且,假设 start_date DATETIME 类型, SQL将获取给定日期的所有事件:

$sql_get_events = 'select * from events where date(start_date) = "2009-08-09"';

答案 4 :(得分:0)

您可以使用某些MySQL时间函数来截断日期,而不仅仅是选择日期。

$sql = "select date_format(start_date, '%Y-%m-%d') as fstart_date, name from events order by start_date";

当然,您必须在PHP代码中将start_date更改为fstart_date。

查看the Mysql reference page for DATE_FORMAT()