recherche

Maison  >  Questions et réponses  >  le corps du texte

Mysql renvoie certains enregistrements vides dans le champ de date car la date a plusieurs formats

J'essaie de rendre l'analyse order_date 列,并且列具有多种日期格式,我想将所有这些日期转换为相同的格式,这将使分析 order_date plus facile.

J'essaie d'analyser order_date 但是此列有多种日期格式 2019/07/151/13/2014

Cependant, lorsque vous utilisez une requête pour convertir des dates dans différents formats en un seul format yyyy/mm/dd . select date_format(order_date, '%y/%m/%d'),orderid from superstore;

Il affiche une valeur nulle comme celle-ci.

J'ai également essayé d'utiliser "CAST" mais il affiche chaque valeur comme vide.

选择 order_date 像 '%Y' 时的情况,然后 date_format(order_date, '%Y/%m/%d') else null end as newdate from superstore;

P粉649990163P粉649990163297 Il y a quelques jours698

répondre à tous(1)je répondrai

  • P粉322918729

    P粉3229187292024-04-07 10:22:18

    La fonction

    date_format est utilisée pour formater le type de données de date que vous devez utiliser https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-to-date Any La valeur renvoyée par null str_to_date échoue ou commence par une valeur nulle. Vous devez les vérifier et ajuster les paramètres str_to_date de manière appropriée. Mais une question est 20/2/20 a/m/j ou j/m/a (par exemple), comment distinguer le cas où le mois et le jour sont <=12 ? <=12 的情况?

    Par exemple

    drop table if exists t;
    create table t
    (dt varchar(10));
    insert into t values
    ('1/1/2020'),('2020/1/12'),('12/12/12'),(null),('13-14-15');
    
    select dt,
            case when length(substring_index(dt,'/',-1)) = 4  then str_to_date(dt,'%d/%m/%Y')
                 when length(substring_index(dt,'/',1)) = 4  then str_to_date(dt,'%Y/%m/%d')
                 when length(substring_index(dt,'/',1)) = 2  then str_to_date(dt,'%y/%m/%d')
                 else str_to_date(dt,'%y/%m/%d')
            end  dateformatted
    from t;

    https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=553219f33ad9e9a4404fc4c0cb65 71c9

    Veuillez noter qu'en aucun cas je ne suis en mesure d'identifier le mois et le jour et parfois même l'année..

    répondre
    0
  • Annulerrépondre