Parece que sua mensagem de erro está vindo do seu cliente MySQL, não do servidor. Portanto, definir o modo estrito do servidor não ajudará você a exibir essas datas com este cliente.
Parece que você tem algumas datas de estilo 2012-09-31 ou 2013-02-29 em seus dados. Eles estão formatados corretamente, mas de outra forma estão errados. Nas versões pré 5.0.2 do MySQL, eles não eram capturados corretamente entrando em seus dados. Agora, seu servidor, definido como
ALLOW_INVALID_DATES
não está engasgando com eles, mas está convertendo-os para '0000-00-00'. E o cliente está gacking neles. Seu primeiro passo para limpar isso é identificar as linhas ofensivas. Você poderia tentar isso.
Primeiro, ative
ALLOW_INVALID_DATES
Em seguida, execute esta consulta para examinar sua tabela. Não use
SELECT *
SELECT col,col,col,DATE_FORMAT(datecol,'%Y-%m-%d')
FROM mytable
ORDER BY DATE_FORMAT(datecol,'%Y-%m-%d')
Tente descobrir a partir do conjunto de resultados quais datas são lixo. Eles podem ser colocados em primeiro lugar nesta instrução select, mas você terá que mexer um pouco para encontrá-los.
Em seguida, descubra como você deseja corrigi-los. Excluir as linhas? Mudar a data para 1941-12-07 (a data que vive na infâmia)? Não podemos dizer o que você precisa fazer aqui.
Então, conserte-os. Se houver apenas um ou dois, corrija-os um por um.
UPDATE mytable
SET datecol='whatever replacement date'
WHERE id='the id of the offending row.'
ou
DELETE FROM mytable
WHERE id='the id of the offending row.'
Se houver milhares deles, você pode corrigi-los em massa com algo assim. Mas não faça isso sem primeiro resolver o problema com muito cuidado em um servidor de teste. Se você cometer um erro, sua mesa será jogada no lixo.
UPDATE mytable
SET datecol='whatever replacement date'
WHERE '0000-00-00' = DATE_FORMAT(datecol,'%Y-%m-%d')
Após terminar de corrigir seus problemas, volte e faça seu
SELECT *
, para garantir que você tenha todos eles. Em seguida, desative
ALLOW_INVALID_DATES
e nunca reative-o novamente. Isso deve limpar a bagunça. Observe que os dados do mundo real sempre têm algumas linhas que não são perfeitas neles.