Try to use a parameterized query and let the work to parse your datatime to the NET Framework code
using(OdbcConnection dbfConn = new OdbcConnection())
{
dbfConn.ConnectionString = @"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;Exclusive=No;Collate=Machine;NULL=NO;DELETED=YES;BACKGROUNDFETCH=NO;SourceDB=" + path;
dbfConn.Open();
OdbcCommand oCmd = dbfConn.CreateCommand(); // needed to query data
oCmd.CommandText = "INSERT INTO " + fileName + " +
"(tax_month,seq_no,tin,registered_name,last_name,first_name,middle_name,address1," +
"address2,gpurchase,gtpurchase,gepurchase,gzpurchase,gtservpurchase,gtcappurchase," +
"gtothpurchase,tinputtax,tax_rate) VALUES (" +
"?, 3, '222333445','TEST COMPANY','','','','DI MAKITA STREET','MANDALUYONG 1602', " +
"52107.14, 49107.14, 1000, 2000, 3000, 4000, 42107.14, 5892.86, 12)"
oCmd.Parameters.Add("@p1", OdbcType.DateTime).Value = tax_month;
int inserted = oCmd.ExecuteNonQuery();
}
Also, the column names should be written without single quotes around. The use of a parameter query has also the added benefit to avoid Sql Injection, though your code is not completely safe because the table name appended with the string concatenation