2016-09-15 14 views
1

表示する日付を検索する入力があります。入力には、 '2006'や '2017-01'のような日付形式(yyyyまたはyyyy-mm-dd)を使用できます。 「2008-10-10」は、私はこのPostgreSQL SELECT LIKE datetime

SELECT * FROM MEMBER WHERE UPPER(join_date) LIKE UPPER(%".$input."%); 

のようなクエリを使用しますが、結果は空で、正しくPostgreSQLでdatetime型のための文のよう

+1

psql cliでこのクエリを実行しましたか?最後に迷いの二重引用符があるのはなぜですか?なぜ、日付フィールドにテキストがないときに 'UPPER'を使用していますか?なぜpsqlについてのタグmysqliを選んだのですか? – Paul

答えて

0

LIKEを使用する方法はあります文字列の、ではないためですDATE値。それはあなたが最初に適切な形式の文字列値に日付を変換する必要があります意味:upper(join_date)を使用して

SELECT * 
FROM member 
WHERE to_char(join_date, 'YYYY-MM-DD') LIKE '%.... %'; 

は邪悪な暗黙的なデータ型変換の対象であり、確実に動作しません。

また、数値のみの文字列のupper()は実際には意味がありません。

関連する問題