私は数百のレコードを持つテーブルを持っています。それぞれにdatetimeカラムが含まれています。その日時フィールドから明確な年を見つける最も効率的な方法は何ですか? (ただし、これはすべてのレコードを読み込む必要になり、)Rubyは使用Railsで複数年のテーブルから別の年を見つける方法
2
A
答えて
11
:
Model.select("my_datetime").map{ |item| item.my_datetime.year }.uniq
使用してSQL(この例では、私はあなたの特定のデータベースとそれを更新することができ、PostgreSQLのためのものです):
# PostgreSQL
Model.select("distinct(extract(year from my_datetime))")
# MySQL
Model.select("distinct(year(my_datetime))")
# SQLite
Model.select("strftime('%Y', my_datetime)")
1
SELECT DISTINCT(YEAR(created_at)) FROM your_table
はおそらく動作しますが、使用しているデータベースに大きく依存しています(これはもちろんMySQLで動作します)。それは本当にためにロードが遅いと、すべてのあなたの記録を反復処理することができても
ActiveRecord
は、
Model.all.map(&:created_at).map(&:year).uniq
のようなRubyのステートメントを使用して、実際にbeautifulerカスタムSQL文を使用したい場合は、お尻の痛みです。
1
これは、アレイ内の独特の年を返します。
years = Model.pluck(:created_at).map{|x| x.year}.uniq
0
これは、PostgreSQLのデータベースから直接年の配列を返します。
YourModel.pluck("DISTINCT EXTRACT(YEAR FROM my_datetime)::Integer")
関連する問題
- 1. 見つけるDateOFBirth年齢から
- 2. SASは年齢から生年月日を見つけます
- 3. Rails 3.1 ActiveRecordのクエリで年間日付を見つける
- 4. 2年後の日付を見つける方法
- 5. 2つの日付の年と月の違いを見つける方法は?
- 6. 今年から来年をPythonで印刷する方法
- 7. 最大のクラッシュレートを持つ年を見つけますか?
- 8. 年、月、日で日の名前を見つける
- 9. MYSQL - 2011年に2020年からの日付の年を変更
- 10. mysqlで年齢層別にユーザー数をグループ化する方法
- 11. うるう年からの計算年数
- 12. 今年の特定の日付から曜日名を見つける方法は?
- 13. 昨年の同じ曜日をSQLでどのように見つけるか?
- 14. PSQLの別のテーブルを継承する子テーブルを見つける方法
- 15. phpでテーブルからカラム名を見つける方法
- 16. PHP年月日から週を2年にした年の年と週を取得する
- 17. ASPで全体の1年間の火曜日を見つける古典
- 18. SQLで2008年だけのデータを選択する方法
- 19. 年齢別にMySQLの結果を誕生日からソートする方法
- 20. 大きいデータベースのあるテーブルから別のテーブルへの結合パスを見つける方法
- 21. テーブル内のアイテムの最大数を見つける方法
- 22. DISPLAYMODE年か十年
- 23. Rails Sqlクエリの月と年
- 24. Rails TimeWithZoneとうるう年
- 25. 重複のないテーブルの日付から年の部分のみを選択
- 26. Rails:1つのクエリから複数のテーブルを検索する
- 27. 現在の年齢から現時点までの生年月日を計算する方法
- 28. データベース内の複数のテーブルの一致を見つける
- 29. 年齢列を毎年変更し、性別のドロップダウンメニュー
- 30. Rubyのレール - 複数のオプションを見つける方法?