我有一个mysql查询,但它还没有正常工作。这个想法是:我有一个月历,所以我选择当前月份的所有项目形成我的数据库。
我选择电视节目集,他们在特定日期播出,但第二天就可以播放。我希望在我的校准中有可用的日期。所以一个具体的例子:一集剧集2013-03-31,可在2013-04-01获得。不会从数据库中选择此剧集。我尝试过这样的事情:
$this->db->where('MONTH(FROM_UNIXTIME(first_aired+86400))='.$month);
但它没有用。有谁知道解决方案?这是我的完整代码:
$this->db->select('*, episodes.overview as overview, episodes.id as ep_id, shows.id as id');
$this->db->from('episodes');
$this->db->join('shows', 'episodes.imdb_id = shows.imdb_id');
$this->db->where('CHAR_LENGTH(episodes.ep_title) > 1');
$this->db->where('MONTH(FROM_UNIXTIME(first_aired))='.$month);
$this->db->where('YEAR(FROM_UNIXTIME(first_aired))='.$year);
$this->db->order_by('episodes.first_aired', 'DESC');
$data = $this->db->get()->result_array();
提前致谢!
答案 0 :(得分:0)
使用MySQL DATE_ADD
功能:
select mydate, date_add(mydate, interval 1 day) from testdata;
因此,如果您想获得第二天的月份,请使用month(date_add(...))
mysql> select mydate, date_add(mydate, interval 1 day) "next day", month(date_add(mydate, interval 1 day)) "month of next day" from testdata;
+------------+------------+-------------------+
| mydate | next day | month of next day |
+------------+------------+-------------------+
| 2013-01-31 | 2013-02-01 | 2 |
| 2013-01-01 | 2013-01-02 | 1 |
+------------+------------+-------------------+
2 rows in set (0.00 sec)
因此,对于您的查询,请使用$this->db->where('MONTH(DATE_ADD(first_aired, INTERVAL 1 DAY))='.$month);
之类的内容。哦,你可能需要在这里和那里添加一个FROM_UNIXTIME
。