sql >> Database >  >> RDS >> Mysql

Datumvoorwaarden met behulp van zoeklogica

Een groot deel van uw probleem lijkt te gebeuren omdat u tekenreeksen omzet in datums en dateert uit tekenreeksen. Ik denk dat je het misschien meer doet dan nodig is.

HTML-formulieren "begrijpen" datums niet echt - ze "begrijpen" alleen strings. Het is dus oké om ze strings door te geven in plaats van datums. Met andere woorden, het is oké om de to_date . te verwijderen .

<% form_for @search do |f| %>
    <%= f.label :start %>
    <%= f.select :due_at_after,
          ['November', '2009-11-01'],['December', '2009-12-01']],
          :include_blank => true
    %>
    <br/>
    <%= f.label :end %>
    <%= f.select :due_at_before,
          [['December', '2009-12-01'],['January', '2010-01-01']],
          :include_blank => true
    %>
    <%= f.submit 'Search' %>
<% end %>

Ik gebruik ook liever :include_blank => true in plaats van [['','']] (naar mijn mening beter leesbaar voor mensen), en ik gebruikte een gesloten <br/> tag (standaard html-dingen - misschien heb je een typfout gemaakt?).

Trouwens, als u een datum wilt specificeren, kunt u een datumconstructor gebruiken. Het is korter om te schrijven en sneller uit te voeren dan het maken van een string en het ontleden van een datum.

#Date(2009,11,1) is faster, shorter, and equivalent
Date(2009,11,1) == '2009-11-01'.to_date # --> true


  1. SQL - Hoe te bestellen met behulp van telling uit een andere tabel

  2. Hoe kan ik meerdere kolommen met prioriteit doorzoeken in MySQL?

  3. Krijg alleen kolomnamen zoals in array mysql

  4. Vind rijen met meerdere dubbele velden met Active Record, Rails &Postgres