背景:
我有一个填充了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查询。
答案 0 :(得分:1)
如果您必须转换日期,请使用strftime(),http://php.net/manual/en/function.strftime.php
使用srttotime()计算过去/未来的日期;获取上个月和该月的最后一天,然后添加24:59:59表示该月的最后一个可能的秒,以及第一个可能的秒的00:00:00。
要在数据库调用中只获得1个结果,请使用LIMIT 1,并按asc / desc排序。