0

我有一个 mysql 查询,但它还不能正常工作。这个想法是:我有一个月历,所以我从我的数据库中选择当前月份的所有项目。

我选择电视节目剧集,它们在特定日期播出,但第二天就可以播放。我想在我的 cal 中有可用的日期。举一个具体的例子:一集于 2013 年 3 月 31 日播出,并于 2013 年 4 月 1 日播出。本集不会从数据库中选择。我尝试过这样的事情:

$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();

提前致谢!

4

1 回答 1

0

使用 MySQLDATE_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这里和那里添加一个。

于 2013-04-06T09:53:49.717 回答