Mysql 显示像';年份%'&燃气轮机=2010

Mysql 显示像';年份%'&燃气轮机=2010,mysql,sql-like,Mysql,Sql Like,我有一个带有表名的数据库 year200801 year200802 year200803 year201010 year201101 year201203 year201204 year201205 .... 现在我需要得到year>date('Y')-2的表。 怎么做 "show tables like 'year%' AND $year>='year2012';" 哎哟,这是一个不幸的模式。从长远来看,最好不要使用这些依赖于日期的表名。但是,您可以从信息\u模式中获得它: SEL

我有一个带有表名的数据库

year200801
year200802
year200803
year201010
year201101
year201203
year201204
year201205
....
现在我需要得到
year>date('Y')-2的表。
怎么做

"show tables like 'year%' AND $year>='year2012';"

哎哟,这是一个不幸的模式。从长远来看,最好不要使用这些依赖于日期的表名。但是,您可以从
信息\u模式
中获得它:

SELECT
  TABLE_NAME
FROM information_schema.TABLES
WHERE
  TABLE_SCHEMA='your_database_name'
  /* LEFT() should be faster than LIKE */
  AND LEFT(TABLE_NAME, 4)='year'
  /* The 4 char substring in the middle of the table name is >= 2 years ago */
  /* Use YEAR(NOW()) to get the current year */
  AND MID(TABLE_NAME, 5, 4) >= (YEAR(NOW()) - 2)
更新: 要显示两年前和当前年份之间的表格,请使用:

  AND MID(TABLE_NAME, 5, 4) BETWEEN (YEAR(NOW()) - 2) AND YEAR(NOW())
更新2这应该完全按照您的要求工作: 将列出2010-2019年范围内的所有表格,如果您有202x:

Show tables LIKE 'year202%'

在MSSQL中,可以比较字符串。所以2010年应该比2012年“少”。所以“show tables where'year'+$year>='year2012';”可能会起作用。好吧,但是您似乎忘记了月份,因为这个查询没有返回任何以下表格:(啊,我需要显示年份(date('Y')-2)和(date('Y')@breq这些月份与这个查询不相关-您要求的是
date('Y')的等价物-2
。如果您需要说明月份,请澄清您的问题。我需要获取所有表名,其中名称(年份)介于当前年份和两年前,包括所有月份。例如,201001年、201002年……201101年、201102年、201103年……201201年、201202年、201203年……我三年前就已经问过了!D谢谢:)@breq我昨天在这个旧答案上注意到了a+1。我怀疑你在这个问题上也这么做了,这就是你回到这个问题上来的原因?我需要显示两个表,分别是年(日期('Y')-2)和年(日期('Y'):(
Show tables LIKE 'year201%'
Show tables LIKE 'year202%'