0

mysql クエリがありますが、まだ正しく機能していません。アイデアは次のとおりです。私は月のカレンダーを持っているので、現在の月のすべてのアイテムをデータベースから選択します。

テレビ番組のエピソードを選択すると、特定の日に放映されますが、翌日に利用可能になります。私は自分のカルに利用可能な日付を入れたいと思っています。具体的な例: あるエピソードが 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

MySQLsDATE_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ああ、あちこちに a を追加する必要があるかもしれません。

于 2013-04-06T09:53:49.717 に答える