欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql插入日期字段數(shù)值不對

林玟書2年前10瀏覽0評論

在MySQL數(shù)據(jù)庫中,有時候我們會遇到插入日期字段數(shù)值不對的問題。比如,我們執(zhí)行如下SQL語句:

INSERT INTO test(date_time) VALUES("2020-02-31 12:00:00");

這條語句的意思是在test表中插入一條記錄,其中日期字段的值為2020年2月31日的12點(diǎn),但是實(shí)際上該日期根本不存在,因?yàn)?月只有28天或29天,而31號是3月份才有的。

執(zhí)行上述SQL語句,MySQL并不會報錯,而是自動將其轉(zhuǎn)換為2020年3月2日的12點(diǎn)。

這是因?yàn)镸ySQL遵從了標(biāo)準(zhǔn)的 SQL92 規(guī)范,會對不符合日期規(guī)范的值進(jìn)行自動轉(zhuǎn)換。例如,對于二月份沒有31號的日期,MySQL會自動將它轉(zhuǎn)換為二月份的最后一天,即28號或29號(如果是閏年)。

如果我們不需要MySQL進(jìn)行自動轉(zhuǎn)換,而是希望它直接報錯或者插入null值,可以通過設(shè)置SQL_MODE來實(shí)現(xiàn)。具體方法如下:

SET SQL_MODE=STRICT_ALL_TABLES; -- 對當(dāng)前會話生效
-- 或者
sql-mode="STRICT_ALL_TABLES" -- 在配置文件中全局設(shè)置

這樣設(shè)置后,如果插入的日期不合法,MySQL就會報錯,或者將日期字段插入為null值。

總之,在MySQL中插入日期字段時,要注意日期值是否符合規(guī)范,以及使用什么樣的SQL_MODE。