DATE型にNULLを格納する方法(0000-00-00の回避,MySQL)
MySQLで、フィールド `date` を、DATE型、NULL許可で作成する。
`date`には YYYY-MM-DD を格納する設計であるが `date` が空欄にされた場合、NULLとすべきである(値がなくゼロでもない)。
しかし、INSERTすると、0000-00-00という値で格納されてしまうことがある。
これをNULLにするには、SQL文組み立ての中で、
$date = “” ;
$sql = “INSERT INTO `test` (`date`,`time`)” ;
$sql .= “VALUES(” ;
if(!$date){
$sql .= “NULL,” ;
}else{
$sql .= “‘”.$date.”‘,” ;
}
$sql .= “‘”.$time.”‘)” ;
$res = mysql_query($sql,$conn) or die(“insert_error”) ;
として分岐すればよい。
この時、
if(!$date){
$sql .= “‘NULL‘,” ;
}else{
$sql .= “‘”.$date.”‘,” ;
}
と、シングルクォーテーションでNULLを囲んでしまうと、0000-00-00という値で格納されてしまう。
デーブルの「構造」にて、
①ヌル(NULL)にチェックを入れると、自動的にデフォルト値がNULLとなる。
②ヌル(NULL)のチェックを外し、デフォルト値にもNULLが入ったままだとエラーになる(当然)。
③ヌル(NULL)のチェックを外し、デフォルト値をNoneにする。
NULLが入った状態で③の操作をしてしまうと、NULLは0000-00-00となってしまい、その後①に戻しても、値はNULLには戻らず、0000-00-00のままとなる。
同じTIME型についても、同様だろう。
ソフトバンククリエイティブ
売り上げランキング: 8,289
技術評論社
売り上げランキング: 331,043
sha-bc@336×280
sha-bc@336×280
sha-bc@336×280
sha-bc@336×280
関連記事
-
-
Fedora 26 Workstation のインストール
スポンサーリンク 久々のFedoraである。 Red Hatの頃によく使っていた …
-
-
サーバー情報の表示内容(ServerTokens)変更 (Apache2.2.22 ,Debian7.4)
スポンサーリンク Apache/2.2.22 (Debian7.4) /etc/ …
-
-
メモリー不足で落杉流CF-R6!メモリーの増設が必須!!
スポンサーリンク 分解をし、ハードディスクをSSDに換装した、CF-R6。 関連 …
-
-
CPU対決!激重SQL編!(Phenom X3 8400 vs Core i5 650)
スポンサーリンク 実行時間が70秒近くかかる激重クエリがある。 この実行に於ける …
-
-
Apache Server Information の設定 (Apache2.2.22 ,Debian7.4)
スポンサーリンク Apache/2.2.22 (Debian7.4) ローカルの …
-
-
冷杉流冷蔵庫 vs 灼熱CF-R6 – 冷却と発熱の仁義ナキ戦い、キミはこの衝撃に耐えられるかッ!!
スポンサーリンク 冷蔵庫のハナシをこのブログで書くとは思わなかったが… …
-
-
Apache Server Status の設定 (Apache2.2.22 ,Debian7.4)
スポンサーリンク Apache/2.2.22 (Debian7.4) ローカルの …
-
-
Ubuntu(14.04 LTS)の電源の統計一覧とバッテリーの劣化 [CF-VZSU49,CF-R6,CF-R7,CF-R8]
スポンサーリンク Linuxは標準で、ここまで細かい電源の情報を得ることができる …
-
-
RedHatLinux9のインストール
スポンサーリンク RedHatLinux9のインストールをしました。 Linux …
-
-
[MySQL] idを詰める(連番を振り直す)方法
スポンサーリンク 数分毎に定期的にログを取得するようなプログラムを書き、DBに格 …