获取当前年份和下一个表单mysql

Tob*_*ias 18 php mysql

我正在从桌子上选择各种东西.问题是我只想选择它们,如果它们属于当年和下一年.

我的桌子看起来像这样

标题文本日期

日期格式如此制作,格式为"日期"

所以问题是我如何只选择今年和下一年的项目?

示例:年份是2012年,我的表中的项目已经过时了,我不想让它们显示 - 我只想选择2012年1月1日的最后一项,最后一次是2013年12月31日当前2012年+ 1年.

非常感谢您的帮助!

Dan*_*man 62

SELECT 
  * 
FROM 
  table 
WHERE 
  YEAR(date) = YEAR(CURDATE()) 
OR 
  YEAR(date) = YEAR(CURDATE()) + 1
Run Code Online (Sandbox Code Playgroud)

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

  • 但请注意,这不会在'date`字段中使用索引. (3认同)

Mch*_*chl 8

SELECT 
  *
FROM
  table
WHERE
  date BETWEEN CONCAT(YEAR(CURDATE()),'-01-01') AND CONCAT(YEAR(CURDATE())+1,'-12-31')
Run Code Online (Sandbox Code Playgroud)

尽管看起来很丑陋,但它允许您的查询在date字段上使用索引。

更好的想法是在外部 PHP 脚本中创建限制日期,以便查询可以使用查询缓存。


如果您只想显示不超过两年的项目,您可以这样做:

SELECT
  *
FROM
  table
WHERE
  date >= CURDATE() - INTERVAL 2 YEAR;
Run Code Online (Sandbox Code Playgroud)