0

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

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, 
        annee_saison,
        semaine,
        periode,
        saison, 
        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,
    annee_saison,
    semaine,
    periode,
    saison, 
    date_venue,station) 

    select client_id, 
        annee_saison,
        semaine,
        periode,
        saison, 
        if(date_venue='',NULL,str_to_date(date_venue,'%Y-%m-%d')),
        station 
    from ef_venues_clients
   order by date_venue desc LIMIT 1;

但是同样的错误。

选择的结果是这样的:

client_id, annee_saison, semaine, periode, saison, str_to_date(date_venue,'%Y-%m-%d'), station
333             2020        NULL    p1      hiver   2020-02-18                      StationName

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

你能帮我吗 ?

先感谢您。

4

2 回答 2

0

正如它的名字所表明的, datetime 需要 "%Y-%m-%d %H:%m:%s" 格式。所以你能试试 '%Y-%m-%d 00:00:00'

于 2020-08-28T08:09:05.983 回答
0

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

 if(date_venue='',NULL,date_venue),
于 2020-08-28T08:40:45.633 回答