使用 PHP 使用两个日期字段和当前月份选择表条目

Posted

技术标签:

【中文标题】使用 PHP 使用两个日期字段和当前月份选择表条目【英文标题】:Using PHP to select table entries using two date fields and current month 【发布时间】:2011-08-09 04:55:29 【问题描述】:

请帮助新手。我有一个名为 event_calendar 的表,其中包含名为 ec_start_date、ec_end_date 和 ec_event_name 的字段。前两个字段是日期字段。这是一个小表,只有不到 100 个条目。我想列出当月开始或结束日期的事件,然后我想列出下个月开始或结束日期的事件列表。这两个列表将以月份名称为首。我希望列表中显示的日期采用 dd/mm 格式。

这是我找到的用于识别列表标题月份的代码。

$thismonth = mktime(0,0,0,date("n"));
$nextmonth = mktime(0,0,0,date("n")+1);

echo "<h2 class='caps'>";
echo date("n", $thismonth);
echo "</h2>";

echo "<h2 class='caps'>";
echo date("m", $nextmonth);
echo "</h2>";

这是我用来提取本月(8 月)活动条目的代码

$query = "SELECT ec_display,ec_event_name,ec_start_date,ec_end_date FROM event_calendar WHERE month(ec_start_date) = 8 OR month(ec_end_date) = 8 ORDER BY ec_start_date";

问题是,如果我用变量 $thismonth 替换数字 8,它会失败。

最后,如何仅显示 ec_start_date 和 ec_end_date 中的 dd/mm?

非常感谢任何指导,但请具体说明,因为我对此很陌生!谢谢!

【问题讨论】:

如果将 8 替换为 $thismonth 会产生什么错误? 【参考方案1】:

$thismonth 包含由mktime 返回的 UNIX 时间戳。今年第 8 个月 0 时 0 分 0 秒 0 的时间戳是 1312862400。那不是 8。

不要把它放在你的查询中,把 date('n') (8) 放在里面......或者让 mysql 去做

$query = "SELECT ec_display,ec_event_name,ec_start_date,ec_end_date FROM event_calendar WHERE month(ec_start_date) = MONTH(CURRENT_DATE) OR month(ec_end_date) = MONTH(CURRENT_DATE) ORDER BY ec_start_date";

【讨论】:

哇,丹,感谢您的快速回复!您的建议效果很好,如何使用 month(current_date) 提取下个月的列表? 试试MONTH(CURRENT_DATE + INTERVAL 1 MONTH) 像魅力一样工作!我非常激动,因为我非常感谢您的帮助。 我可以再要求一件事吗?如何仅显示 ec_start_date 和 ec_end_date 的月份和日期? 在您的 php 代码中从查询中检索到行后,您可以使用 date 来设置您想要的日期格式,就像您之前对月份数字所做的那样。例如,echo date('F jS', strtotime($row['ec_start_date'])); 得到类似“8 月 9 日”的信息。

以上是关于使用 PHP 使用两个日期字段和当前月份选择表条目的主要内容,如果未能解决你的问题,请参考以下文章

sql如何按日期中的月份查询

使用 PHP 将 mm/dd/yyyy 格式转换为纪元

查询数据库以显示基于当前日期和月份的数据总数

PHP 如何获取两个时间之间的年和月份及间隔天数 PHP两个日期之间的所有日期

MS Access:如何使用查询按月选择条目

将两个单独的日期字段组合到Tableau中的一个