MySQL gibt einige Datensätze im Datumsfeld als leer zurück, da das Datum mehrere Formate hat
P粉649990163
P粉649990163 2024-04-06 13:29:40
0
1
594

Ich versuche, die Analyse order_date 列,并且列具有多种日期格式,我想将所有这些日期转换为相同的格式,这将使分析 order_date einfacher zu machen.

Ich versuche zu analysieren order_date 但是此列有多种日期格式 2019/07/151/13/2014

Allerdings, wenn eine Abfrage zum Konvertieren von Datumsangaben in verschiedenen Formaten in ein Format verwendet wird yyyy/mm/dd . select date_format(order_date, '%y/%m/%d'),orderid from superstore;

Es zeigt einen Nullwert wie diesen an.

Ich habe auch versucht, „CAST“ zu verwenden, aber es zeigt jeden Wert als leer an.

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

P粉649990163
P粉649990163

Antworte allen(1)
P粉322918729

date_format 函数用于格式化您应该使用的日期数据类型 https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-to-date 任何 null str_to_date 返回的值要么失败,要么以空值开始。您需要检查这些并适当调整 str_to_date 参数。但有一个问题是 20/2/20 y/m/d 或 d/m/y(例如),如何区分月份和日期都 例如

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一个>

请注意,在任何情况下我都无法识别月份和日期,有时甚至是年份..

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage