【问题标题】:mysql select month from timestampmysql 从时间戳中选择月份
【发布时间】:2013-03-28 18:35:15
【问题描述】:

我有一个 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();

提前致谢!

【问题讨论】:

  • 你能不能先从前一个日期得到下一个日期..如果你能得到然后使用这个日期('m',$date);
  • 没有+86400 的代码是否有效?在测试数据库上,使用今天的时间戳,像这样的直接 SQL 查询会产生预期的结果(也就是返回下个月的项目):SELECT * FROM test WHERE MONTH(FROM_TIMESTAMP(first_aired + 2592000)) = 5。所以这种类型的查询有效。你看过生成的 SQL 吗?例如,echo $this->db->last_query();。附带说明一下,您为什么还要使用 unix 时间戳?您应该将这些日期存储为 DATEDATETIME 字段。

标签: php mysql codeigniter date timestamp


【解决方案1】:

使用 MySQLs 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2016-02-16
    • 2016-01-22
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2021-09-05
    相关资源
    最近更新 更多