Sehen Sie sich den Wert an:
'2013-31-01 16:00:40'
Das versucht, einen Monat zu verwenden vom 31.
Es ist nicht klar, ob das nur bedeutet, dass Ihre Testdaten falsch sind, oder ob Sie diese Zeilen ändern müssen:
SELECT SUBSTRING(DATE,3,2) FROM db.test_table INTO LMONTH;
SELECT SUBSTRING(DATE,1,1) FROM db.test_table INTO LDAY;
zu:
SELECT SUBSTRING(DATE,1,2) FROM db.test_table INTO LMONTH;
SELECT SUBSTRING(DATE,4,2) FROM db.test_table INTO LDAY;
Beachten Sie die Änderung von 1 auf 2 für den Teilstring, der sowieso bei 1 beginnt, und die Änderung der zweiten Startposition von 3 auf 4. Sie wollen zweistellige Monats- und Tageswerte, richtig? Wenn Ihr Datenformat eigentlich ist D/M/YYYY (d. h. wenn Sie nur zwei Ziffern verwenden, wenn sie erforderlich sind), können Sie keine festen Teilstringpositionen verwenden.