SQLException
सीधे MySQL से नहीं आता है, यह शायद आपकी क्लाइंट भाषा द्वारा ट्रिगर किया गया है। MySQL केवल एक चेतावनी उत्पन्न करेगा जिसे आप सामान्य रूप से अनदेखा कर सकते हैं। जो भी हो, ALLOW_INVALID_DATES
SQL मोड चाहिए वास्तव में चाल है:
चेतावनी:
mysql> SET @@SESSION.sql_mode='NO_ZERO_DATE,NO_ZERO_IN_DATE';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test (date_created) VALUES (str_to_date('','%m/%d/%Y'));
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+-------------------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '' for function str_to_date |
+---------+------+-------------------------------------------------------+
1 row in set (0.00 sec)
कोई चेतावनी नहीं:
mysql> SET @@SESSION.sql_mode='ALLOW_INVALID_DATES';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test (date_created) VALUES (str_to_date('','%m/%d/%Y'));
Query OK, 1 row affected (0.03 sec)
संपादित करें: अगर आप क्वेरी को फिर से लिखने का तरीका ढूंढ रहे हैं, तो आप कुछ इस तरह से कोशिश कर सकते हैं:
update atable
set adate=NULL
where anum='1'
बेशक, इसके लिए यह आवश्यक है कि adate
अशक्त है।