我有一个条目的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()来存储日期和时间。如何让它忽略时间,以便达到我的目的?
答案 0 :(得分:1)
使用CURDATE()代替NOW()。
答案 1 :(得分:1)
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。