mySQL:按世纪分组的与时间相关的查询行?

时间:2011-02-08 19:57:13

标签: mysql time rdbms

我正在开发一个项目,其中包含一个类似于此的数据库表(结构上,但不是数据方式 - puuh):

year    |  event                               |    category
------------------------------------------------------------
1970    |  Someone ate a cheeseburger          |   food
2010    |  Justin bieber was discovered        |   other
1500    |  Columbus makes 3rd trip to America  |   notable
------------------------------------------------------------

我如何查询此表,以便我的结果按照每个世纪的方式分组?

  

2000世纪:
  2010年 - Justin bieber被发现

     

1900世纪:
  1970年 - 有人吃了芝士汉堡

     

1500世纪:
  1500年 - 哥伦布第三次访问美国

对于这个俗气的psuedodata很抱歉:)

2 个答案:

答案 0 :(得分:2)

MySQL没有世纪功能,但确实有年份,所以你基本上做了:

SELECT whatever
FROM yourtable
WHERE ...
GROUP BY CAST((Year(datetimefield) / 100) AS INTEGER)

当然,这并没有考虑到几个世纪正式开始他们的“1”年,而不是“0”年(例如1900年仍然是18世纪,而不是19世纪)。但如果你不是精确的坚持者,简单的“除以100”方法是最快/最简单的方法。

答案 1 :(得分:1)

SELECT CAST((Year(datetimefield) / 100) AS INTEGER) as century, someotherfields
FROM yourtable
WHERE ...
ORDER BY datetimefield

我认为这是一个更好的方法。

(从Marc B借来的伪代码)