-1

我有两个字段存储事件的特定日期范围。

假设活动将于 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 中解决这个问题?

4

2 回答 2

1

这取决于您如何将日期数据保存在数据库中

如果是 '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)));

我无法进行精确查询,因为我不知道表中的字段名称和查询中的参数名称

我希望你理解这个想法

于 2012-12-13T03:41:59.303 回答
0

至于我的经验。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'");
?>

我没有完成剧本,但想法就在那里,希望你能明白。

于 2012-12-13T03:59:02.180 回答