Mira el valor:
'2013-31-01 16:00:40'
Eso es intentar usar un mes de 31.
No está claro si eso solo significa que sus datos de prueba son incorrectos o si necesita cambiar estas líneas:
SELECT SUBSTRING(DATE,3,2) FROM db.test_table INTO LMONTH;
SELECT SUBSTRING(DATE,1,1) FROM db.test_table INTO LDAY;
a:
SELECT SUBSTRING(DATE,1,2) FROM db.test_table INTO LMONTH;
SELECT SUBSTRING(DATE,4,2) FROM db.test_table INTO LDAY;
Tenga en cuenta el cambio de 1 a 2 para la subcadena que comienza en 1 de todos modos, y el cambio de la segunda posición inicial de 3 a 4. Desea valores de mes y día de dos dígitos, ¿verdad? Si su formato de datos es realmente D/M/YYYY (es decir, solo usando dos dígitos cuando son necesarios), entonces no podrá usar posiciones de subcadenas fijas.