• 締切済み

type date にnullをinsert

phpとpostgressqlで開発をしております。 さて、 date列に条件によって日付を入れたり、入れなかったりします。 日付を入れる場合はOKですが、 日付を入れない場合は、nullとすると、下記のエラーが出ます。 Query failed: ERROR: invalid input syntax for type date: "" null以外に''も試しましたが、エラーになります。 何か対処方法を教えてください。 よろしくお願いします。

みんなの回答

回答No.1

nullを入れる方法を、間違っているだけでは? >日付を入れない場合は、nullとすると、下記のエラーが出ます。 >Query failed: ERROR: invalid input syntax for type date: "" 具体的に、SQLはどのように記述しているのでしょうか? >null以外に''も試しましたが、エラーになります。 そんなデタラメをやらずに、自分で調べてみては? nullを入れるには、 「insert into t1(c1,c2,c3) values(1,'a',null)」 と明示的に格納値としてnullを指定する方法があります。 また、データ型の定義でnot nullにしていないなら、 「insert into t1(c1,c2) values(1,'a')」 と値を明示指定しないで、省略時解釈値として格納する方法などがあります。

関連するQ&A

  • php経由でpostgresqlにdate型カラムにNULLを入れるには

    psqlのコマンドからは INSERT INTO table VALUES (NULL); でdate型のカラムにNULLを入れられるようですが、 PHPで以下のようにしてもその下にあるエラーが出ます。 if(empty($date)){ $date = 'NULL'; エラーを回避してdate型カラムにNULLをいれる方法を 捜しています。 Warning: PostgreSQL query failed: ERROR: Bad date external representation 'NULL' PHP4.1 POSTGRES7.0 の環境です。

    • 締切済み
    • PHP
  • timestamp が空のデータを除いて、データを選択したい

    テスト用に簡単なテーブルを作成してみました。 テーブル名:timetest フィールド: test_id : integer NOT NULL test_date : timestamp without time zone テストデータとして 1,2005-11-15 14:01:40.026 2,NULL 3,2005-11-14 11:11:11.001 このときに test_date がNULL以外のものだけを選択したいのですが、 slect * from timetest where test_date != null; では1件も選択されず、 select * from timetest where test_date != ''; では、 ERROR: invalid input syntax for type timestamp: "" というエラーになってしました。 どなたかご教授お願い致します。

  • MySQL Date型にNULLが設定できない。

    csvファイルからMySQLにデータを取り込む際に、Date型やint型にNULLを設定するにはどうしたらよいでしょうか。 以下のようなテーブルに | tTest | CREATE TABLE `ttest` ( `ID` bigint(20) NOT NULL, `title` text NOT NULL, `naiyou` varchar(100) DEFAULT NULL, `kaishi` date DEFAULT NULL, `owari` date DEFAULT NULL, `peirod` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=sjis | 以下のようなcsvファイルを読み込んだとき(*)、 10,テスト,2008-04-05,2009-04-23,43 11,テスト,2008-04-05,NULL,43 12,テスト,2008-04-05,2009-04-23,NULL 2行目のNULLで ERROR 1292 (22007): Incorrect date value: 'NULL' for column .... とエラーが発生します。 3行目のNULLでもint型ですが同様にエラーとなります。 一方、insertで行の追加以下のようにした場合は成功します。 insert into tTest values (12,テスト,'2008-04-05',NULL,NULL) 外部ファイルから読み込んだ場合にNULL値を設定するにはどのようにしたらよいのでしょうか。 (*)以下のコマンド LOAD DATA INFILE "E:\\work\\MySQL\\sample.csv" INTO TABLE tTest FIELDS TERMINATED BY "," LINES TERMINATED BY "\r\n";

    • ベストアンサー
    • MySQL
  • Mysql DATE型のDEFAULT値

    初心者ですが、よろしくお願いします。 Mysqlでテーブルを作成して、カラムにDATE型を指定するとDEFAULT値が設定できません、、、。 これはMysqlの仕様なのでしょうか? ちなみに、TIMESTAMP型だと、'DEFAULT CURRENT_TIMESTAMP'でDEFAULT設定できます、、。 -- クエリ CREATE TABLE test ( column_name DATE NOT NULL DEFAULT CURRENT_DATE ); >> エラー ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_DATE)' at line 1 Mysql::ABも調べたのですが、よく分かりませんでした。 よろしくお願いします。 MySQLバージョン 5.0.41

  • エラーコードがわかりません

    あるフォームから送信しようとすると SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer というエラーが表示されます うまく送信する方法と エラーの意味が知りたいです よろしくお願いいたします

  • date型に空白を入れるとエラーになる

    現在、CSVファイルからCOPYコマンドを使用し、 データのINSERTを行いたいと思っております。 で試したところ、 COPY test from '/var/lib/pgsql/csv/insert.csv' USING DELIMITERS ','; とコマンドを入力した結果 ERROR: invalid input syntax for type date: "" CONTEXT: COPY test, line 1, column purchase: "" となってしまいます。 これを回避するためには、どうすればよいでしょう。 postgresqlは初心者なので、申し訳ございませんが 教えてください。よろしくお願いいたします。

  • ファイルを分けたデータベースのINSERTができない。

    こんばんわ毎度毎度、質問続きで恐縮です。現在、ファイルをわけて、DBに商品登録をする、というスクリプトを作っています。トップ画面の商品入力フォームから商品登録の確認画面まではいけるのですが、 その、確認画面で登録ができずに悩んでいます。 下のスクリプトは、入力フォームで商品名と値段が入力されたとき 追加ボタンを押し登録をするスクリプトにしようと思い作成しました。 ただ、登録ボタンを押すと、「Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1」という構文誤りのエラーが出てしまうのです。 また、入力フォームからの商品や値段の受け渡しはPOSTでしようと思いました。 ご回答願えますでしょうか? //商品登録部分 $submit = $_POST["submit"]; $_item = $_POST["item"]; $price = $_POST["price"]; if($submit == "追加"){ $item = $_POST["item"]; $price = $_POST["price"]; if($contact=mysql_connect("host","admin","root")){ echo "<center><strong>商品登録表示</strong></center><br>"; mysql_select_db("test", $contact); $query = "INSERT INTO shoppingtable (item, price) VALUES ('".$item."',".$price.")"; $query2 = 'SET NAMES sjis'; mysql_query( $query2 ); $result = mysql_query($query) or die('Query failed: ' . mysql_error()); } if($submit){ header("Location:shoppingformCompletion.php"); } } //ここまで

    • ベストアンサー
    • PHP
  • MySQL insertができない

    商品名とその値段を挿入しようとおもっているのですが、下記のようなエラーがでて先に進めずにいます。 Query failed: Unknown column 'item' in 'field list' <?php if($contact=mysql_connect("host","admin","root")){ echo "サーバに接続しました。<br>"; } mysql_select_db("watanabe", $contact); $query = 'INSERT INTO list(item,price) VALUES("りんご","100")'; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); if($result){ echo"追加に成功しました。"; }else{ echo"追加に失敗しました。"; } ?> ご回答願えますでしょうか?

    • ベストアンサー
    • PHP
  • JDBCを使ってdate型へのINSERTはできますか?

    JDBCを使ってOracleへ接続し、DBへデータを挿入したいのですが、 日付型のデータがどうしてもうまく挿入できません。 jsp + Servlet + Bean で開発しています。 使っているテーブルは CREATE TABLE USERS (     USERID     VARCHAR2(10) NOT NULL,     PASSWORD  VARCHAR2(10) NOT NULL,     NAME      VARCHAR2(50) NULL,     SEX       VARCHAR2(5)  NULL,     BIRTHDAY   DATE       NULL,     PRIMARY KEY (USERID, PASSWORD) ) という風な型で、定義しています。 DBへのINSERT処理は、Beanで行っています。 以下のINSERT文を実行したのですが、うまくINSERTできませんでした。 String sqlQuery = "INSERT INTO USERS (USERID, PASSWORD, NAME, SEX, BIRTHDAY)" + "VALUES ('use', 'pass', 'ナマエ', '女性', '1980/06/05')" int numOfUpdate = statement.executeUpdate(sqlQuery); ちなみに、この中のdate型で定義している「BIRTHDAY」を除いたINSERT文 String sqlQuery = "INSERT INTO USERS (USERID, PASSWORD, NAME, SEX)" + "VALUES ('use', 'pass', 'ナマエ', '女性')" int numOfUpdate = statement.executeUpdate(sqlQuery); だとうまくINSERTできます。 sql*plusを使って直に書くと、両方うまくINSERTできました。 ●その後に、「BIRTHDAY」をdate型からVARCHAR2(10)へ定義し直し、  DBを作り直して実行した所、うまくINSERTできるようになりました。 なぜ「date型」だとINSERTできず、「VARCHAR2型」だとINSERTできるのか、 知っている方がおられましたら、ぜひ教えて頂きたいです。

    • ベストアンサー
    • Java
  • modifyでnot nullを追加出来ない

    My SQL バージョン5.5です。 学校で習っている時に 追加で、 not nullを設定しようと思い、 modify文を色々試して使いましたが Syntaxのエラーが出て、 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' c_pass not null' at line 1 (※c_pass はカラム名です) change 型名(桁数)を使うと変更できました。 なぜmodifyなどでは追加変更出来なかったのか、原因がわかる方はいらっしゃいますか? バージョンの問題ですか?

    • ベストアンサー
    • MySQL