我有两个字段存储事件的特定日期范围。
假设活动将于 12/13/12 - 12/20/12 开始。
所以我们的领域是
名称:我的活动开始时间:12/13/12 结束时间:12/20/12
用户将有两个输入框。一个框将说明 from_date 和另一个 to_date。如果用户选择
起始日期:2012 年 12 月 15 日 截止日期:12 年 12 月 19 日
它应该显示“我的事件”记录,因为它属于 date_range。
问题:您如何在 SQL 中解决这个问题?
这取决于您如何将日期数据保存在数据库中
如果是 'datetime' 字段,请使用 'between' 构造
mysql_query("select * from events where date between '".date("Y-m-d H:i:s", strtotime($from_date))."' and ".date("Y-m-d H:i:s", strtotime($to_date)));
我无法进行精确查询,因为我不知道表中的字段名称和查询中的参数名称
我希望你理解这个想法
至于我的经验。INT 数据类型中的 date 比 mysql 数据库上的 datetime 数据类型轻,您可以尝试先将 datetime 更改为 INT,然后在将其保存到数据库之前将其转换为秒,例如:
<?php
$start_at = strtotime("12/13/12");
$end_at = strtotime("12/20/12");
/* SAVE on the database */
?>
然后将其保存在具有 INT 数据类型的表日期字段中
然后在查询中,您可以轻松地说
如果用户在两个字段(开始和结束字段)上输入 from_date: 12/15/12 to_date: 12/19/12
<?php
$start_at = strtotime($from_date); //12/15/12
$end_at = strtotime($to_date); //12/19/12
/*do the query*/
mysql_query("SELECT name FROM table WHERE Start_at <= '$start_at' AND End_at >= '$end_at'");
?>
我没有完成剧本,但想法就在那里,希望你能明白。