sql >> Databáze >  >> RDS >> Mysql

Datumové podmínky pomocí vyhledávací logiky

Zdá se, že velká část vašeho problému se děje proto, že převádíte řetězce na data a data zpět na řetězce. Věřím, že toho možná děláte víc, než potřebujete.

HTML formuláře ve skutečnosti „nerozumí“ datům – pouze „rozumějí“ řetězcům. Je tedy v pořádku předat jim řetězce místo dat. Jinými slovy, je v pořádku odstranit to_date .

<% 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 %>

Také dávám přednost použití :include_blank => true místo [['','']] (podle mého názoru čitelnější pro člověka) a použil jsem uzavřený <br/> tag (standardní html věci – možná jste udělali překlep?).

Mimochodem, pokud chcete zadat Datum, můžete použít konstruktor Date. Zápis je kratší a provádění je rychlejší než vytváření řetězce a analyzování data z něj.

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


  1. MySql udělte uživateli oprávnění

  2. Jaké jsou optimální velikosti varcharů pro MySQL?

  3. Jsou v MySQL povoleny vnořené transakce?

  4. Získejte čas provedení dotazu PostgreSQL