- ベストアンサー
DELETEの操作で (PostgreSQL)初心者
テーブルの中に日付(2002/02/02)、社員番号(10)、JOBno(1234)、種別番号(10)作業時間(8.00)の項目順に並んであり、数値が入っています。(カッコの数値は例です) このテーブルの中の2002/02/01から2002/02/15までのデータをDELETEさせたいの ですがまだよくわかってないので教えてください。 あと2002/02/16から2002/02/末日までのもわかればおねがいします。 (末日は28、29、30、31のパターンを別々にだせばよいのですかね?) DELETE FROM テーブル名 WHERE 2002/02/01....?(指定する条件がわかりません)
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
PostgreSQLについているマニュアルを読んでください。 ヒントだけ。 日付の場合には to_date関数を使って DATE型に変換します。 TO_DATE('2002/02/01','YYYY/MM/DD') ※対象のテーブルの日付列の型が質問文中に書いてありませんが、もし timestamp型なら TO_TIMESTAMP()関数を 使って変換します。 後は、WHERE句に指定するだけ。 DELETE .... WHERE 日付 BETWEEN TO_DATE(....) AND TO_DATE(...)
その他の回答 (3)
たびたび、、、ありました。 (参考URLを・・・・) where 日付 between '20020201' and '20020215' で問題ないようです。 (すいません "" ではないですね) http://www.rccm.co.jp/~juk/pgsql/tutorial-j.html こちらも参考下さい。
ちょっと解かり難い回答でした。ごめんなさい。。。 「次月1日の一日前」というのは、、 質問内容からすると 「2月末日は3月1日の1日前」 ( 2002/2/28 = 2002/3/1 - 1)です。 日付型の列であれば だいたい where 日付 <= "20020301" - 1 でできそうですが・・・・・・ これも PostgreSQLでは解かりません。。。
PostgreSQL が全く解からないのですが・・・ 標準的には delete from テーブル名 where 日付 between "20020201" and "20020215" ; あるいは delete from テーブル名 where 日付 >= "20020201" and 日付 <= "20020215" ; となります。。。。 あと、末日の算出方法ですが 「次月1日の1日前」が便利な算出方法かと思います。 どちらにしてもPostgreSQLでできるのかどうかは、 私にはわかりません。。 できることを祈っています。 (私も今後 PostgreSQlを使う予定ですので・・・・)