簡體   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