Mysql中datetime預設值問題

2021-08-20 04:56:12 字數 1312 閱讀 3198

在使用mysql時當建表語句中有以下語句時:

create_time datetime not null

default

'0000-00-00 00:00:00'

則會出現以下的異常:

invalid default

value

for'create_time'

這是由於 sql_mode 的問題沒設定好,方案如下:

方案一:

查詢當前資料庫的 sql_mode

輸入:

select

@@sql_mode

得到以下結果:

only_full_group_by,strict_trans_tables,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution
可以看到no_zero_in_date,no_zero_date是 date 不能全部為0的原因,所以把模式中的no_zero_in_date,no_zero_date去掉就可set [session|global] sql_mode=』modes』下:

set

global sql_mode='only_full_group_by,strict_trans_tables,error_for_division_by_zero,no_auto_create_user,no_engine_substitution'

其中:session只在當前會話中生效,global為全域性生效。

方案二:

改mysql模式

修改my.cnf檔案,在[mysqld]中新增

sql-mode=only_full_group_by,strict_trans_tables,error_for_division_by_zero,no_auto_create_user,no_engine_substitution
重啟mysql

方案三:

把語句改為以下就可以執行建立表

create_time datetime not null

default

'0000-01-01 00:00:00'

mysql中的datetime型別的比較

例如有乙個user表如下 create table user id int 11 primary key,name varchar 50 not null,age int 3 not null,create time datetime not null 一 date 如需要查詢近乙個月新增的使用者 ...

mysql中datetime比較大小問題

select sum studychj as tofflinejz from afterline where checkflag 1 and studytype 1 and studybegin 2010 01 01 00 00 00 and studyend 2010 12 01 00 00 00...

mysql中datetime比較大小問題

select sum studychj as tofflinejz from afterline where checkflag 1 and studytype 1 and studybegin 2010 01 01 00 00 00 and studyend 2010 12 01 00 00 00...