这很有效:
select date('2016-01-11 06:40:10.188918 UTC') as bbb;
结果:
January, 11 2016 00:00:00
但这失败了:
drop table if exists temp_junk;
create temporary table temp_junk as
select date('2016-01-11 06:40:10.188918 UTC') as bbb;
错误:
Data truncation: Truncated incorrect datetime value: '2016-01-11 06:40:10.188918 UTC'
这是正确的行为吗?
为什么它不在这两个地方都失败(或成功)?
http://sqlfiddle.com/#!9/5fc015/1/0
关于@michae-sqlbot建议的更多信息:
SELECT @@VERSION, @@SQL_MODE
结果(在我的谷歌SQL数据库中)
@@VERSION @@SQL_MODE
-------------------------------------------------------
5.6.26 STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
在SQLFiddle中:
@@VERSION @@SQL_MODE
5.6.21 STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
根据@Michael-sqlbot上面的评论,取消设置STRICT_TRANS_TABLES sql_mode可以使其工作:
SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
或
SET sql_mode = '';
我不确定我是否理解这些模式,但一些信息可以在http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_strict_trans_tables