插入表时,MYSQL错误1292 Incorrext datetime值

问题描述

出于个人原因,我需要从视图创建表。所以我这样创建表

sub BuildUnbalancedTree {
    my $this = shift;

    foreach my $key (@{$this->{'unordered_list'}}){
        my $newnode = $this->NewNode($key);
        $this->Insert(\$this->{root},$newnode);
    }
}

然后我要像这样插入我的值:

drop table if exists  ef_vues_venues_clients;
CREATE TABLE ef_vues_venues_clients (
    client_id integer primary key,annee_saison integer,semaine integer,periode char(2),saison varchar(10),date_venue date,station varchar(10)
);

但是我有这个错误

insert into ef_vues_venues_clients(
    client_id,annee_saison,semaine,periode,saison,date_venue,station) 

    select client_id,if(date_venue='',NULL,str_to_date(date_venue,'%Y-%m-%d')),station 
    from ef_venues_clients;

为确保它不是来自我的数据,我尝试仅插入这样的一行:

Error Code: 1292. Incorrect datetime value: '13'

但同样的错误

选择的结果是这样:

   insert into ef_vues_venues_clients(
    client_id,station 
    from ef_venues_clients
   order by date_venue desc LIMIT 1;

这里没有'13',所以我不明白...

你能帮我吗?

谢谢。

解决方法

顾名思义,日期时间应为“%Y-%m-%d%H:%m:%s”格式。 那么您可以尝试'%Y-%m-%d 00:00:00'

,

我认为问题在于您的date_venue变量已经是DATE类型。 INSERT语句似乎正常工作。 str_to_date尝试转换DATE变量,但需要VARCHAR变量。我会尝试省略str_to_date函数:

 if(date_venue='',NULL,date_venue),