2016-09-07 2 views
1

Abfrage der Datenbank für den created_at Wert gibt die folgende Ausgabe zu extrahieren?
Ich versuchte kevin.created_at als String zu behandeln und sehen, ob ich das, was ich mit will bekommen konnte:Wie nur Jahr von created_at Spalte

>> kevin.created_at.split[3].to_i 

Jedoch habe ich diese Meldung:

NoMethodError: undefined method `split' for Sun, 21 Aug 2016 07:46:26 UTC +00:00:Time 

Deshalb ich versucht:

>> kevin.created_at.to_a 
=> [26, 46, 7, 21, 8, 2016, 0, 234, false, "UTC"] 

So kann ich eine Lösung mit haben:

>> kevin.created_at.to_a[5] 
=> 2016 

Gibt es eine bessere oder elegantere Lösung, um Postgresql nach diesen Informationen abzufragen?

Antwort

9

können Sie verwenden .year Funktion von ruby ​​Time-Klasse wie:

kevin.created_at.year 
5

In Postgres, die EXTRACT Funktion können Sie nur das Jahr von einem Datum erhalten:

# SELECT EXTRACT('year' FROM created_at) as year FROM USERS LIMIT 1; 
year 
------ 
2016 
(1 row) 

In Ruby, wenn Sie bereits Ihren Eintrag auf der Hand haben, können Sie einfach die Time#year Methode verwenden:

user.created_at.year # => 2016 
Verwandte Themen