LoginSignup
7
4

More than 5 years have passed since last update.

PostgreSQLでは以上、以下(=>、=<)が使えない!?

Posted at

PostgreSQLでは以上、以下(=>、=<)が使えない!?

研修中に新人から「PostgreSQLで以上、以下が使えません」と質問がありました。
もちろんPostgreSQLで使えるのですが、こういうところで引っ掛かるんですね、ということで今回Qiitaの記事にしてみました。
なお、「新人に悲観ロックによる排他制御を体験してもらう」という記事も書いています。興味があればこちらも参照いただければと思います。

  • 「以上」を抽出条件とするSQL
以上のSQL
SELECT * FROM customer
WHERE customer_birth => to_date('2017/01/01', 'yyyy/MM/dd')
エラーになります
ERROR:  演算子が存在しません: date => date
LINE 2: WHERE customer_birth => to_date('2017/01/01', 'yyyy/MM/dd')
                             ^
HINT:  指定名称、指定引数型に合う演算子がありません。明示的な型キャストが必要かもしれません

********** エラー **********

ERROR: 演算子が存在しません: date => date
SQLステート:42883
ヒント:指定名称、指定引数型に合う演算子がありません。明示的な型キャストが必要かもしれません
文字:45
  • 「以下」を抽出条件とするSQL
以下のSQL
SELECT * FROM customer
WHERE customer_birth =< to_date('2017/01/01', 'yyyy/MM/dd')
エラーになります
ERROR:  演算子が存在しません: date =< date
LINE 2: WHERE customer_birth =< to_date('2017/01/01', 'yyyy/MM/dd')
                             ^
HINT:  指定名称、指定引数型に合う演算子がありません。明示的な型キャストが必要かもしれません

********** エラー **********

ERROR: 演算子が存在しません: date =< date
SQLステート:42883
ヒント:指定名称、指定引数型に合う演算子がありません。明示的な型キャストが必要かもしれません
文字:45

PostgreSQLにおける「以上」「以下」の正しい書き方

PostgreSQLでは以上は「>=」、以下は「<=」を利用します。
等号(=)が後で、不等号(>、<)が前になるので注意しましょう。

  • 「以上」を抽出条件とするSQL
正しい以上のSQL
SELECT * FROM customer
WHERE customer_birth >= to_date('2017/01/01', 'yyyy/MM/dd')
  • 「以下」を抽出条件とするSQL
正しい以下のSQL
SELECT * FROM customer
WHERE customer_birth <= to_date('2017/01/01', 'yyyy/MM/dd')
7
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4