从MYSQL中选择日期和时间间隔

时间:2011-08-28 23:42:10

标签: php mysql

背景: 我有一个填充了500 rows的数据库表。数据来自网站json API。有一个名为created_at的列,它模仿json API,而不是本地行created_at时间。以下是API 2009-12-10T20:08:00+0000中日期/时间格式的示例。数据库中的列具有类型varchar,稍后可能会出现问题。

问题: 我希望设置一个特定的查询,或者如果无法实现查询,则通过循环运行所有数据库行。我希望能够以设定的日期间隔查询帖子,例如,今天的日期是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日)。

特殊情况 如果其中一个不存在,我希望能够检索前一个或前一个行日期更接近请求的日期。如果他们一个日期的多行,我只想要第一个。

非常感谢任何帮助。

更新 我添加了一个类型为datetime的列,并使用与created_at_datetime对应的新date('Y-m-d H:i:s', $jsonDate)列提取并更新了行。我仍然不知道如何形成mysql查询。

1 个答案:

答案 0 :(得分:1)

如果您必须转换日期,请使用strftime(),http://php.net/manual/en/function.strftime.php

使用srttotime()计算过去/未来的日期;获取上个月和该月的最后一天,然后添加24:59:59表示该月的最后一个可能的秒,以及第一个可能的秒的00:00:00。

要在数据库调用中只获得1个结果,请使用LIMIT 1,并按asc / desc排序。