「html フィールド」と JavaScript ウィジェットの意味がわかりません。それは純粋な SQL の質問です。
とにかく、正規表現を正しく理解していれば、これはうまくいくはずです:
where extract(year from "date") = 2013
and extract(month from "date") between 1 and 9
and extract(day from "date") between 1 and 15
一部の式に関数ベースのインデックスを作成する場合にのみ高速になりますが、それ以外の場合はテーブル全体のスキャンも実行されます。次のインデックスはおそらく速度を上げるのに役立ちます(条件によって行数が大幅に減少すると仮定します)
create index idx_year
on foo (extract(year from "date"),
extract(month from "date"),
extract(day from "date"));
別のオプションは次のとおりです。
where "date" between DATE '2013-01-01' and DATE '2013-09-15'
and extract(day from "date") <= 15
ところで:date列の恐ろしい名前です。1 つ目は予約語でもあるため、2 つ目 (そしてより重要なこと) は、列に含まれる内容を文書化していないためです。