Вижте стойността:
'2013-31-01 16:00:40'
Това е опит за използване на месец от 31.
Не е ясно дали това просто означава, че вашите тестови данни са грешни, или трябва да промените тези редове:
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;
Обърнете внимание на промяната от 1 на 2 за подниза, започващ с 1 така или иначе, и промяната на втората начална позиция от 3 на 4. Искате двуцифрени стойности за месец и ден, нали? Ако вашият формат на данните е всъщност D/M/YYYY (т.е. само с две цифри, когато са необходими), тогава няма да можете да използвате фиксирани позиции на подниз.