Lihat nilainya:
'2013-31-01 16:00:40'
Itu mencoba menggunakan bulan dari 31.
Tidak jelas apakah itu berarti data pengujian Anda salah, atau apakah Anda perlu mengubah baris ini:
SELECT SUBSTRING(DATE,3,2) FROM db.test_table INTO LMONTH;
SELECT SUBSTRING(DATE,1,1) FROM db.test_table INTO LDAY;
ke:
SELECT SUBSTRING(DATE,1,2) FROM db.test_table INTO LMONTH;
SELECT SUBSTRING(DATE,4,2) FROM db.test_table INTO LDAY;
Perhatikan perubahan dari 1 menjadi 2 untuk substring yang dimulai dari 1, dan perubahan posisi awal kedua dari 3 menjadi 4. Anda menginginkan dua digit nilai bulan dan hari, bukan? Jika format data Anda sebenarnya D/M/YYYY (yaitu hanya menggunakan dua digit saat diperlukan) maka Anda tidak akan dapat menggunakan posisi substring tetap.