Eu estava usando uma consulta UPDATE para corrigir minhas datas. É a mesma consulta com uma instrução CASE que usei antes. Ela verifica se a data VARCHAR está em branco, se estiver, então defina como NULL. Caso contrário, altere o formato da data.
Por algum motivo, ele está definindo todas as datas como NULL.
Após reimportar os dados, comecei a usar um SELECT (que provavelmente é a melhor prática). Aqui está o SELECT:
SELECT `dateColumn`, CASE `dateColumn`
WHEN '' THEN NULL
ELSE date_format(str_to_date(`dateColumn`, '%m/%d/%Y %H:%i:%s %P'), '%Y-%m-%d')
END AS 'NEW DATE'
FROM `table` where `EmailAddress` = '[email protected]';
Isso me dá estes resultados:
dateColumn | NEW DATE
----------------------------------------
9/9/2024 12:00:00 AM | NULL
O formato parece correto. Não sei por que está mudando a data para NULL.
Por favor ajude.
** EDITAR **
Acabei de perceber que estou recebendo um aviso que diz:
Warning: #1411 Incorrect datetime value: '9/9/2024 12:00:00 AM' for function str_to_date
É improvável que isso esteja causando o erro.
Não há letras maiúsculas,
%P
a documentação indica letras minúsculas%p
para am/pm.str_to_date
Retornará nulo se não puder analisar o formato.Além disso, como você tem horários AM/PM, você deve usar
%h
o que é de 01 a 12.Também alterei
case
um pouco a sintaxe.Veja como funciona aqui: https://sqlfiddle.com/mysql/online-compiler?id=54541e8d-2bd1-43bc-93b9-e62a511aab0a