2011-02-08 2 views
1
私は1つのデータベーステーブルはこのように見ていますプロジェクトに取り組んでいます

(構造ではなく、datawise - puuh):私の結果はパーにグループ化されるように、私は、このテーブルを照会する方法をmySQL:時間に関連した行を世紀別に集計していますか?

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 - ジャスティン・ビーバーを発見された

1900世紀:1970
- 誰かがチーズバーガーを食べた

1500世紀:
1500 - コロンブスが第三の旅を作りますアメリカへ

おいしい擬似データのために申し訳ありません:)

+0

うーんグループ(MySQLはこれを実行するために申し訳ありませんが、私が手に実際のコードを持っていませんか)? – FrustratedWithFormsDesigner

答えて

2

MySQLは世紀の機能を持っていないが、それは一年持っているので、あなたは基本的に行います。

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

、これは何世紀には正式に「自分の年に1を開始考慮されていません。 "、年" 0 "ではない(例: 1900年はまだ18世紀であり、19世紀ではない)。しかし、あなたが精密さのために執着する者でなければ、単純な "100で割る"方法が最も簡単で簡単です。

+0

こんにちはマーク。 'AS INTEGER' ..は有効ではありませんが、'(CAST(FLOOR((年/ 100))AS UNSIGNED)) 'はうまくいきます。誰か他の人を助けるかもしれない。お返事ありがとうございます! – Industrial

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

私は思うように質問には良いですか?

(マルク・Bから借りた擬似コード) `year`の第一2桁

関連する問題