Zub*_*ir1 4 php mysql database
我正在编写脚本,要求管理员能够在他想要停车场时插入日期,管理员在一个范围内插入日期.
我很难找到在MySQL中存储日期的最佳方法的解决方案.
我应该使用存储两列的日期AVAILABLE_FROM_DATE和AVAILABLE_UNTIL_DATE?
PLID AVAILABLE_FROM DATE AVAILABLE_UNTIL_DATE
1 2012-04-01 2012-04-03
1 2012-04-05 2012-04-15
2 2012-04-21 2012-04-30
Run Code Online (Sandbox Code Playgroud)
或者我应该只使用一个列AVAILABLE_DATE并将管理员选择的范围存储在范围之间的每个日期的新行中?
[编辑开始]
我在上面使用单个列的意思是不将日期连接或拆分成单个列,我实际上是指将日期存储在单行中,如下所示:
PLID AVAILABLE_DATE
1 2012-04-01
1 2012-04-02
1 2012-04-03
Run Code Online (Sandbox Code Playgroud)
对于我想要存储的所有可用日期等等.
[编辑结束]
基本上,管理员希望插入停车场可用的日期范围,并允许成员在用户正在寻找该范围内的插槽时选择该插槽.
或者有更好更简单的方法吗?
我目前正在尝试使用第一种方法,使用单独的列作为范围,但在查找范围内的停车场时无法获得所需的结果.
[编辑开始]
SELECT * FROM `parking_lot_dates`
WHERE (available_from_date BETWEEN '2012-04-22' AND '2012-04-30'
AND (available_until_date BETWEEN '2012-04-22' AND '2012-04-30'))
Run Code Online (Sandbox Code Playgroud)
我对上面的行使用以下查询,它返回空.我希望它返回具有PLID 2的最后一行.
[编辑结束]
先感谢您.
关于您对查询的编辑,您有内在的逻辑.您需要比较您检查的每个日期是否在范围内BETWEEN available_from_date and available_until_date,如下所示:
SELECT * FROM `parking_lot_dates`
WHERE
(
'2012-04-22' BETWEEN available_from_date AND available_until_date
AND '2012-04-30' BETWEEN available_from_date AND available_until_date
)
Run Code Online (Sandbox Code Playgroud)
演示:http://www.sqlfiddle.com/#!2/ 911a3/2
编辑:虽然如果你想要允许部分范围匹配,你需要两种类型的逻辑,即停车场可用4-22到4-27,你需要4-23到4-28 .您可以在4-23到4-27之间使用它,但不能使用4-28.
| 归档时间: |
|
| 查看次数: |
3290 次 |
| 最近记录: |