在Mysql存储过程中检索年份

时间:2013-11-20 13:57:12

标签: mysql stored-procedures

  

我想每年不计算身份证。

     

我的表schame: - id号,s_date日期

     

和数据

- - - - + -----------

| id | s_date |

+ ----- + ------------ +

| 1 | 2013-10-15 |

| 10 | 2013-10-27 |

| 11 | 2013-10-27 |

| 12 | 2013-10-27 |

| 13 | 2013-01-27 |

| 14 | 2013-11-11 |

| 15 | 2013-11-10 |

| 16 | 2012-11-10 |

| 17 | 2013-01-10 |

| 18 | 2012-10-27 |

| 2 | 2013-10-16 |

| 3 | 2013-10-16 |

| 4 | 2013-10-16 |

| 5 | 2013-10-17 |

| 6 | 2013-10-17 |

| 7 | 2013-10-17 |

| 8 | 2013-10-18 |

| 9 | 2013-10-26 |

  

我希望O / p喜欢

+ ----------- + -------------- +

| tot | year1 |

+ ----------- + -------------- +

| 2 | 2012 |

| 16 | 2013 |

+ ----------- + -------------- +

  

我的商店程序: -

的MySQL> CREATE PROCEDURE sen49()

-> begin

-> declare year1 datetime;

-> declare tot INT;

-> select count(id) INTO tot,year(s_date) INTO year1 from year_info group by year(s_date);

-> end $$

错误: -

ERROR 1327(42000):未声明的变量:年

所以请帮我解决这个错误....年份声明我尝试日期和varchar数据类型...但是没有解决这个错误。

2 个答案:

答案 0 :(得分:1)

试试这段代码 -

BEGIN
  SELECT YEAR(s_date) year, COUNT(*) count FROM year_info GROUP BY YEAR(s_date);
END

答案 1 :(得分:0)

易:

SELECT COUNT(*), SUBSTRING(s_date, 1, 4) AS Year
FROM table
GROUP BY SUBSTRING(s_date, 1, 4)

如果需要,MySQL可以将日期字段视为“字符串”,并以ISO格式存储它们(YYYY-MM-DD)