sql >> Databáze >  >> RDS >> PostgreSQL

Problém s aktivním dotazováním na záznamy a heroku.

Měli byste používat zástupný symbol získat správný formát a zajistit, aby byl správně citován:

t      = Time.new
events = Event.where("datetime < :t", :t => t)

timestamp nelze porovnávat sloupec s celým číslem v PostgreSQL, ale můžete v SQLite. Musíte porovnat své timestamp s jiným timestamp (nebo date ) nebo řetězec, který lze analyzovat jako timestamp . Tento SQL nebude fungovat:

SELECT "events".* FROM "events" WHERE (datetime < 132462148)

ale tyto budou:

SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23 06:52:25.096869')
SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23')

Zde je několik lekcí:

  1. Měli byste také začít vyvíjet nad PostgreSQL, pokud se chystáte nasadit do Heroku, ActiveRecord vás neizoluje od všech rozdílů mezi různými databázemi.
  2. Měli byste nechat ActiveRecord, aby se co nejvíce staral o problémy s převodem typů. Pokud porovnáváte s datem nebo časem, použijte zástupný symbol a předejte AR nějaký časový objekt a nechte AR, aby se o to starala.
  3. Pokud je to možné, použijte místo interpolace řetězců zástupné symboly.



  1. Jak kódovat znaky z Oracle do XML?

  2. MySQL:Vyhněte se výběru sloupců se stejným uživatelským jménem

  3. PDO byly řádky ovlivněné během příkazu spuštění

  4. Existuje nějaký jednoduchý stránkovací rámec pro php, který lze snadno implementovat?