We are the World~、We are the DBViewer~、からのコマンドプロンプトで、今回はDBViewerとコマンドプロンプトの仁義なき闘いですかね。
悲しいとき~、MySQLのDATE型で有効でない値が入ったとき~
まあ、100%自分が悪いんですが、LibreOfficeのCalcというものがExcelに似たことができるということで、MySQLのデータベースのテーブルに入れるダミーデータを作っていたんですよ。
な~~にぃい~~~~~~~~~~!!!!? やっちまったな!
いや、まだクールポコ先輩の雰囲気じゃないんですが、LibreOfficeのCalcの練習で日付のデータをCalcのrand関数とかで作っていたわけです。
当然、日付が31日までランダムになってしまうので、西向く侍(2、4、6、9、11)の月で値が不正になってしまう可能性があったので、DBViewerを見ると、
「NULL」になってる個所が!?
LibreOfficeのCalcを見ると、
たしかに、11月に31日なんてないですよね~、というわけで、コマンドプロンプトで
SELECT * FROM tour_sales FROM sale_date = NULL;
を実行したところ、Empty set (0.00 sec)とか表示されたんで、もう不正な値ないんですね、では、
SELECT EXTRACT(YEAR_MONTH from sale_date), SUM(price_sum) AS '月ごとの売り上げ', SUM(tour_price_count) AS '月ごとの販売数' FROM tour_sales GROUP BY EXTRACT(YEAR_MONTH from sale_date);
って実行したところ、始めに『EXTRACT(YEAR_MONTH from sale_date)』のところが0って...な~~にぃいーーーーーーーーーーーーーーーーに!?やっちまったな!
男は黙って、コマンドプロンプト、ということで、MySQLのマニュアルで書いてあった「0000-00-00」は不正の値という説明を思い出し、
SELECT * FROM tour_sales WHERE sale_date = '0000-00-00';
DBVierwerでは、NULLに!
LibreOfficeのCalcのほうでも、たしかに存在しない値になってます。
DBViewerを信じるかコマンドプロンプトを信じるかはあなた次第...今日も時間を無駄にしてしまった。
今回はこのへんで。