2011-08-28 46 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进行排序。