在MySQL數據庫中,有時候我們會遇到插入日期字段數值不對的問題。比如,我們執行如下SQL語句:
INSERT INTO test(date_time) VALUES("2020-02-31 12:00:00");
這條語句的意思是在test表中插入一條記錄,其中日期字段的值為2020年2月31日的12點,但是實際上該日期根本不存在,因為2月只有28天或29天,而31號是3月份才有的。
執行上述SQL語句,MySQL并不會報錯,而是自動將其轉換為2020年3月2日的12點。
這是因為MySQL遵從了標準的 SQL92 規范,會對不符合日期規范的值進行自動轉換。例如,對于二月份沒有31號的日期,MySQL會自動將它轉換為二月份的最后一天,即28號或29號(如果是閏年)。
如果我們不需要MySQL進行自動轉換,而是希望它直接報錯或者插入null值,可以通過設置SQL_MODE來實現。具體方法如下:
SET SQL_MODE=STRICT_ALL_TABLES; -- 對當前會話生效 -- 或者 sql-mode="STRICT_ALL_TABLES" -- 在配置文件中全局設置
這樣設置后,如果插入的日期不合法,MySQL就會報錯,或者將日期字段插入為null值。
總之,在MySQL中插入日期字段時,要注意日期值是否符合規范,以及使用什么樣的SQL_MODE。
上一篇mysql插入時間字符串
下一篇css怎么設置灰色線