繁体   English   中英

存储多个日期范围

[英]Storing multiple date ranges

因此,我正在开发一个拼车系统,用户可以在该系统中提交可以提供乘车服务的日期,或者他们希望在什么时间乘车。

表单本身将使用虚拟日历,用户可以通过单击日历来选择日期,也可以通过按住Shift键并单击来选择日期范围。 他们还将能够选择多种类型的选择,即IE他们可以使用日期范围,然后再添加一个或两个显然不在该范围内的日期。

这些日期将产生的格式如下:

标准日期:yyyy-mm-dd

多个日期:

yyyy-mm-dd,yyyy-mm-dd

日期范围:

yyyy-mm-dd-yyyy-mm-dd

多个日期范围:

yyyy-mm-dd-yyyy-mm-dd,yyyy-mm-dd-yyyy-mm-dd

混合:

yyyy-mm-dd-yyyy-mm-dd,yyyy-mm-dd

现在,我对将其存储到数据库中的最佳方式感到好奇。 是否可以将所有这些信息存储到某种日期/另一表的日期数组中。 还是应该为每个范围创建多个实例?

如果我告诉您这些表格的想法,可能会更好:

如果用户(id = 1)想要提供2014-04-01-2014-04-06以及2014-04-09-2014-04-11的电梯,此刻数据库将执行以下操作:

  id  userid startDate  EndDate
 ---- ------ ---------- ----------
    1     1  2014-04-01 2014-04-06
    2     1  2014-04-09 2014-04-11

还是应该使用多个表或将多个单独的日期(而不是范围)作为一个数组?

之所以重要,是因为当某人搜索提供升降机的人时,他们显然显然有时希望查看该人提供的所有可用升降机,因此,如果用户将其提交为“提供”。

日期将由json生成,并通过php-> pdo插入数据库。 数据库是mysql。

还要注意,请求表将容纳比显示更多的数据,但这仅是这里所需要的。 主要问题是我不想在多个日期范围内到处重复数据。

很抱歉,如果我还没有很好地解释这一点,那么将其传达出来是相当复杂的。

谢谢你的时间。 安迪。

我现在不记得原因了,但是当我使用交易系统时,我们还必须将一段时间内的交易头寸放置在相似的日期结构中,以便可以出于查询目的方便地查询它们。 我们将有一个这样的结构:

  id  userid startDate  EndDate
 ---- ------ ---------- ----------
    1     1  2014-04-01 2014-04-06
    2     1  2014-04-06 2014-04-09
    3     1  2014-04-09 2014-04-11
    4     1  2014-04-11 null

我不记得我们现在为什么这样做的确切原因,但这与快速,轻松地获取所有位置数据有关。

我同意IK

要解决您的一些其他问题:

还是应该使用多个表或将多个单独的日期(而不是范围)作为一个数组?

将每个日期存储在该范围内将是一个坏主意。 它不仅会快速填满您的数据库,而且还需要插入很多操作,并且修改起来更加复杂(例如,如果用户想缩小范围)。

关于“单个日期”。 我仍将其存储为范围。 您可以按照IK的建议将结束日期设为空,但是我只希望有一天的时间范围,例如

id  userid startDate  EndDate
--- ------ ---------- --------
4   1      2014-04-11 2014-04-11

从编码的角度来看,它更加一致,这意味着当结束日期为null时,您不必在代码中处理“特殊情况”。 这也意味着如果需要的话,可以为“开放式”范围保留空值(当然,这是一种特殊情况!)。

我还假设您在数据库中使用了正确的日期类型,而不是存储为字符串:)

我不记得我们现在为什么这样做的确切原因,但这与快速,轻松地获取所有位置数据有关。

为了进一步阐述这一点。 对表进行非规范化并将“日期”用作数据类型时,将获得一些性能,因为避免了至少两个联接。 但这始终取决于精打细算的情况,例如,如果您希望性能胜于重复数据删除,反之亦然。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM