我有表格名的数据库
year200801
year200802
year200803
year201010
year201101
year201203
year201204
year201205
....
Run Code Online (Sandbox Code Playgroud)
现在我需要把桌子放到哪里year > date('Y')-2.怎么做?
"show tables like 'year%' AND $year>='year2012';"
Run Code Online (Sandbox Code Playgroud)
哎呀,这是一个不幸的架构.从长远来看,你最好取消这些与日期相关的表名.但是,您可以从information_schema以下位置获取:
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)
Run Code Online (Sandbox Code Playgroud)
要显示2年前和当前年份之间的表格,请使用:
AND MID(TABLE_NAME, 5, 4) BETWEEN (YEAR(NOW()) - 2) AND YEAR(NOW())
Run Code Online (Sandbox Code Playgroud)
mysql> SELECT yearstring, MID(yearstring, 5, 4) BETWEEN (YEAR(NOW()) - 2) AND YEAR(NOW()) FROM tmp;
+------------+-----------------------------------------------------------------+
| yearstring | MID(yearstring, 5, 4) BETWEEN (YEAR(NOW()) - 2) AND YEAR(NOW()) |
+------------+-----------------------------------------------------------------+
| year201001 | 1 |
| year201005 | 1 |
| year201205 | 1 |
| year201301 | 0 |
| year201112 | 1 |
| year201304 | 0 |
| year200912 | 0 |
| year200901 | 0 |
+------------+-----------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12863 次 |
| 最近记录: |