2014-02-21 99 views
-1

我正在創建一個個人無裝飾應用程序..我需要存儲日期,因此我可以在該月的任何給定月份詳細信息中調出數據庫。然而,我已經重新定位了需求,並且我正在試圖弄清楚是否更好地繼續追加更多的日期,以及每年每月的更多行,或者更好地存儲一個月/天以及間隔,還是什麼?在數據庫中存儲日期的最佳方式

難道是像

更好的存儲日期

只是增加每個數據新行永遠直到時間的盡頭每月

  1. 2014年1月1日
  2. 2014年2月1日
  3. 2014年3月1日

,或者它會更好月|一天|間隔,並通過PHP以某種方式計算它,並查詢我拉什麼東西,然後在現在和間隔期間將其全部整理在一起

  • 01 | 01 | 30
  • 01 | 01 | 120
+1

你可以發佈這兩個選項的佈局嗎?這是一個不太明確的權利,你正在試圖做... – dethtron5000

+0

這是不可能與給出的信息說。我猜你不想存儲*日期*,但有些記錄除了別的以外還有日期。然後,將每條記錄與日期列一起存儲,並根據需要使用SQL查詢進行過濾和分組併合並。 – deceze

+0

我總是將日期存儲爲自1970年1月1日以來經過的秒數(unix時期) - 一個整數。它使查詢任何兩次之間的條目非常快速和容易。它還爲格式化顯示時提供了最大的靈活性。 StackOverflow可以做到同樣的事情,就像帖子顯示爲「x秒前」,「x分鐘前」或「_formatted_date_」一樣。你可以用'time()'函數得到當前秒數。 – enhzflep

回答

2

我傾向於將單個日期存儲在表中。

有兩點要注意:

當有人建立了一個重複發生的事件,我會存儲在單獨的表,與「規則」,(該月的第一個星期日,這個月的15號奇數日期等),並旋轉它來生成日曆日期,以添加到「事件」表中。我還需要一些用戶指定的結束復發(限於類似於一年或五年的事情,所以我不會旋轉未來日期的船)

在[event]表中, d將外鍵存儲回經常出現的系列... FK列中的值將表示它是一個「重複出現」事件,並將[事件]行重新綁定到它所屬的特定重現系列。

如果有人更改或刪除重複發生的事件,我發現在[活動]表中的相關行,做什麼,是適當的。

一個優點是,它可以讓我記錄具體到每一個信息發生,以及信息abo經常性事件。

另一個優點是,如果某個事件的某個事件必須被取消或推遲,那麼我不希望改變重複規則,我只是將其中一個事件標記爲取消或推遲。

+0

有道理..由於某種原因,我只是無法環繞我的大腦,這將是一個擊球場景使用.. – chris

+0

@chris:這真的取決於要求,你正在嘗試做什麼。爲了註明一些每年重複出現的日曆日期(例如,「媽媽的生日」),我會實現一個單獨的「規則」表,並且不存儲單個事件行(我會旋轉事件表,並且會旋轉用於生成行的「規則」表,但不一定將這些行存儲爲[event];我只是在日曆上以與假日標註相同的方式進行提示;而不是作爲計劃的「事件」(包括筆記,地點,時間),但作爲一整天的符號,同樣我會在日曆上註明「滿月」。 – spencer7593

相關問題