MySQL:两个日期字段之间的日期

时间:2012-12-13 03:37:46

标签: php sql

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

让我们说,活动将于12月13日12月12日开始。

所以我们的领域是

姓名:我的活动 Start_at:12/13/12 End_at:12/20/12

用户将有两个输入框。一个框将声明from_date和另一个to_date。如果用户选择

from_date:12/15/12 to_date:12/19/12

它应该显示'my event`记录,因为它属于date_range。

问题:你如何在SQL中解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

如果是'datetime'字段,请使用'之间'构造

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)));

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

我希望你理解这个想法

答案 1 :(得分:0)

至于我的经历。 INT数据类型中的日期比mysql数据库上的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'");
?>

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