Titta på värdet:
'2013-31-01 16:00:40'
Det är att försöka använda en månad av 31.
Det är inte klart om det bara betyder att dina testdata är felaktiga eller om du behöver ändra dessa rader:
SELECT SUBSTRING(DATE,3,2) FROM db.test_table INTO LMONTH;
SELECT SUBSTRING(DATE,1,1) FROM db.test_table INTO LDAY;
till:
SELECT SUBSTRING(DATE,1,2) FROM db.test_table INTO LMONTH;
SELECT SUBSTRING(DATE,4,2) FROM db.test_table INTO LDAY;
Notera förändringen från 1 till 2 för delsträngen som börjar på 1 ändå, och förändringen av den andra startpositionen från 3 till 4. Du vill ha tvåsiffriga månads- och dagvärden, eller hur? Om ditt dataformat är faktiskt D/M/YYYY (dvs. använder bara två siffror när de krävs) då kommer du inte att kunna använda fasta delsträngspositioner.