I have created an SQL table with a DATETIMES
parameter of data type datetime
. I am reading a number of rows from a csv file and I am trying to reformat the date time (row[3]), from format %Y%m%d%H%M%S
to the datetime
compatible %Y-%m-%d %H:%M:%S
. Print d2 yields a correct modified date format i.e. 2013-12-13 17:32:12, however using the SQL insert statement below triggers
Warning: Out of range value for column 'DATETIMES' at row 1
Would anyone have an idea on why a datetime format of this type might be rejected?
for row in csv_data:
if len(row)>=17:
indate = row[3]
d=datetime.strptime(indate, '%Y%m%d%H%M%S')
d2=d.strftime("%Y-%m-%d %H:%M:%S")
parsed = (d2, int(row[2]),int(row[4]),int(row[5]),int(row[6]),int(row[7]),int(row[8]),int(row[9]),int(row[10]),int(row[11]),int(row[12]),int(row[13]),int(row[14]),int(row[15]),int(row[16]))
cursor.execute("""INSERT INTO PR(DATETIMES,PERIOD ,DATA1,DATA2,DATA3, DATA4,DATA5, DATA6, DATA7, DATA8, DATA9, DATA10,DATA11, DAT12, DATA13) \
VALUES("%s", %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) \
ON DUPLICATE KEY UPDATE DATETIMES=values(DATETIMES) ,PERIOD=values(PERIOD),DATA1=values(DATA1) ,DATA2=values(DATA2) ,DATA3=values(DATA3),DATA4=values(DATA4) ,DATA5=values(DATA5) ,DATA6=values(DATA6) ,DATA7=values(DATA7) ,DATA8=values(DATA8) ,DATA9=values(DATA9) ,DATA10=values(DATA10) ,DATA11=values(DATA11) ,DATA12=values(DATA12) ,DATA13=values(DATA13);""", parsed)
mydb.commit()