Regardez la valeur :
'2013-31-01 16:00:40'
C'est essayer d'utiliser un mois sur 31.
Il n'est pas clair si cela signifie simplement que vos données de test sont erronées ou si vous devez modifier ces lignes :
SELECT SUBSTRING(DATE,3,2) FROM db.test_table INTO LMONTH;
SELECT SUBSTRING(DATE,1,1) FROM db.test_table INTO LDAY;
à :
SELECT SUBSTRING(DATE,1,2) FROM db.test_table INTO LMONTH;
SELECT SUBSTRING(DATE,4,2) FROM db.test_table INTO LDAY;
Notez le changement de 1 à 2 pour la sous-chaîne commençant à 1 de toute façon, et le changement de la deuxième position de départ de 3 à 4. Vous voulez des valeurs de mois et de jour à deux chiffres, n'est-ce pas ? Si votre format de données est réellement J/M/AAAA (c'est-à-dire en n'utilisant que deux chiffres lorsqu'ils sont requis), vous ne pourrez pas utiliser de positions de sous-chaîne fixes.