sql >> Database >  >> RDS >> PostgreSQL

Rails converteert de tijdzone niet (PostgreSQL)

Uw database slaat uw tijdstempels op in UTC (zoals het hoort). ActiveRecord maakt tijdzone-aanpassingen wanneer het weet dat het een tijdstempel heeft; dus, als je dit zegt:

puts Activity.first.starting_at

AR weet dat starting_at is een tijdstempel, dus het maakt de tijdstempel als een ActiveSupport::TimeWithZone instantie en die klasse past de tijdzone-aanpassing toe. Maar als je dit zegt:

select("date_trunc('day', activities.starting_at) as date ...

AR gaat de SQL niet ontleden om erachter te komen dat date_trunc zal een tijdstempel retourneren, AR weet niet eens wat date_trunc middelen. AR ziet gewoon een string uit de database komen en zal deze zonder interpretatie aan u overhandigen. U bent vrij om die string door te voeren naar ActiveSupport::TimeWithZone (of je favoriete les voor tijdafhandeling) zelf:er is niets mis mee om AR dingen te vertellen die het zelf niet weet en niet kan weten.

Rails is slim, maar het is geen magie.




  1. Update met een subquery in MySQL

  2. Wat is het verschil tussen || operator en concat-functie in Oracle?

  3. Waarschuwing:mysql_real_escape_string() [function.mysql-real-escape-string]:er kon geen link naar de server tot stand worden gebracht in

  4. Sql server Integration Services 2008-2005 compatibiliteit