Guarda il valore:
'2013-31-01 16:00:40'
Questo sta cercando di utilizzare un mese di 31.
Non è chiaro se ciò significhi semplicemente che i dati del test sono errati o se è necessario modificare queste righe:
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;
Nota la modifica da 1 a 2 per la sottostringa che inizia comunque da 1 e la modifica della seconda posizione iniziale da 3 a 4. Vuoi valori di mese e giorno a due cifre, giusto? Se il formato dei dati è effettivamente G/M/AAAA (ovvero utilizzando solo due cifre quando sono richieste), non potrai utilizzare posizioni di sottostringa fisse.