2011-08-28 48 views
0

背景: 我有一個填滿500 rows以上的數據庫表。這些數據來自網站json API。有一個名爲created_at的列,它模擬了json API,而不是本地行created_at時間。以下是來自API 2009-12-10T20:08:00+0000的日期/時間格式示例。數據庫中的列的類型爲varchar,稍後可能會出現問題。從MYSQL中選擇日期和時間間隔

問題: 我希望設置一個特定的查詢,或者如果無法實現查詢通過循環運行所有的數據庫行。我希望能夠以設定的日期間隔查詢帖子,例如,今天的日期是2011年8月28日,我希望與該日期匹配的每週,每月和每年的帖子。每週看起來像這樣(即2011年8月28日,2011年8月21日,2011年8月14日,2011年8月7日)。每月將看起來像這樣(即2011年8月28日,2011年7月28日,2011年6月28日,2011年5月28日)。

每年看起來像這樣(即2011年8月28日,2010年8月28日,2009年8月28日)。

特殊情況 如果其中一個是不存在我想找回前或訴訟排日期爲準接近要求的日期的能力。如果他們是多行爲一個日期我只是想第一個。

任何幫助將不勝感激。

UPDATE 我添加了一個列有該類型datetime,並與新的created_at_datetime列其中correspondes到date('Y-m-d H:i:s', $jsonDate)拉和更新的行。我仍然不知道如何形成mysql查詢。

+0

如果您將該JSON日期字符串轉換爲本機MySQL'datetime'格式,它將使您的生活更加輕鬆。例如:'$ mysqlDate = date('Y-m-d H:i:s',$ jsonDate);'然後可以讓你更容易地處理時間。 – Bojangles

+0

然後呢?它被轉換後,我仍然不知道如何讓它以我想要的方式查詢。 – ThomasReggi

+0

對不起,我不能有更多的幫助;儘管在Google上查看'MySQL INTERVAL',但我對MySQL並不擅長,那應該讓你到某個地方。 – Bojangles

回答

1

如果您有日期,使用的strftime(),http://php.net/manual/en/function.strftime.php

使用srttotime()來計算,在過去/未來日期轉換;獲取上個月和本月的最後一天,然後添加一個24:59:59表示本月的最後一個可能秒,以及第一個可能秒的00:00:00。

要在數據庫調用中只獲得1個結果,請使用LIMIT 1,並按asc/desc進行排序。