【发布时间】:2011-08-28 23:42:09
【问题描述】:
背景:
我有一个充满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 的列,并使用对应于date('Y-m-d H:i:s', $jsonDate) 的新created_at_datetime 列提取和更新了行。我仍然不知道如何形成 mysql 查询。
【问题讨论】:
-
如果您将 JSON 日期字符串转换为原生 MySQL
datetime格式,您的生活会变得更加轻松。例如:$mysqlDate = date('Y-m-d H:i:s', $jsonDate);会让您更轻松地与时俱进。 -
然后呢?转换后,我仍然不知道如何让它以我想要的方式查询。
-
对不起,我帮不上忙;我对 MySQL 不是特别好,尽管在 Google 上查看
MySQL INTERVAL;这应该能让你到达某个地方。