SQLから.csvにエクスポートしようとしています。特定の数の引数を受け入れるようにハードコードすると機能します。物事は、私はユーザーが任意の数の引数を要求し、これらをwhere句に渡すことができるようにします。コードではこれをもう少し明確にする必要があります。where句にリストを渡す
create temporary table bdates as
select tt.date, tt.time, tt.location
from birthdays as bd
inner join days as d
on (d.id = bd.birth_id)
inner join total_time as tt
on (bd.date = tt.date and
bd.time = tt.time and
d.day_of = tt.location)
where tt.date in(:date1, :date2) --defined by user at command line
order by...
\copy bdates to '.csv'
は、だから私は、私がやりたいと思うものにリストを渡すことで、where句の代わりに、明示的な:日付#変数。たとえば、引数「2012-01-04 12:00、2012-02-04 12:00、2012-03-04 12:00」を使用してスクリプトを実行することも、引数を2つだけ使用することもできます。 3の場合、文字列は '2012-01-04 12:00'、 '2012-02-04 12:00'、 '2012-03-04 12:00'に解析されます。
私はstring_to_array()、unnest(regexp_matches(:dates、expression))とregexp_split_to_table(:dates、expression)を試しました。
キャストすることはできません型テキストは[]のタイムゾーンのないタイムスタンプする
タイムゾーンのないタイムスタンプにタイプレコードをキャストすることはできません
regexp_splitがサポートしていません。私が試した様々なソリューションが含む多数のエラーを生成していますグローバルオプション
最後のものが特にがっかりするものであると私は途方に暮れだと、任意の入力をお願い申し上げセット
を返してはいけませんWHEREの引数。これを行う簡単な方法はありますか?ありませんか?ありがとう!
正規表現は必要ありません。文字列のまわりに中かっこを入れて、タイムスタンプ[] '配列にキャストしてください。 –
そして、配列にはINを使用できません。あなたはequalとANYを使用する必要があります。 'WHERE expr = ANY(arrayHere)' –