CrBruno
CrBruno

Reputation: 1003

DateTime value from Oracle to MySql database

I have a question, how to parse datetime value from Oracle to MySQL database.

I wrote this to extract a datetime from Oracle:

SELECT TO_CHAR(p1.creation_date,'DD.MM.RRRR HH24:mi:ss') AS dat_pot 
FROM TABLE

then I put the result into data set, then I extract the value of date from dataset like this:

string lDat_otp = null;        

if (rw_mat["dat_otp"].ToString().Length <= 0)
{
   lDat_otp = "0";
}
else
{
   lDat_otp = "convert(datetime,'" + rw_mat["dat_otp"] + "',4)";
}

Then I use lDat_otp in INSERT statement with some other values like this:

myQuery = " INSERT INTO ordersstavke (BrDok, " +
          " SifParFil, SifParIsp, DatPriOtpr, SifPodKla, Masa, Paketa) " +
          " VALUES ('" + rw_mat["brdok"] + "', '" +
                         rw_mat["sifskl_kor"] + "','" +
                         rw_mat["partner"] + "'," +
                         lDat_otp + ",'" +
                         rw_det["ibrmat"] + "', '" +
                         rw_det["izlaz_tez"] + "', '" +
                         rw_det["izlaz_kol"] + "')";

But there is an error on execute and it goes:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '26.01.2012 13:48:41',4)','100654', '0', '10')' at line 1

So help!!!

Upvotes: 1

Views: 1145

Answers (1)

aleroot
aleroot

Reputation: 72616

You can parse the datetime field into a DateTime struct and then create an insert into query with parameters and pass the date as parameter :

DateTime time = //Some value ...
String myQuery = " INSERT INTO ordersstavke (BrDok, " +
          " SifParFil, SifParIsp, DatPriOtpr, SifPodKla, Masa, Paketa) " +
          " VALUES ('" + rw_mat["brdok"] + "', '" +
                         rw_mat["sifskl_kor"] + "','" +
                         rw_mat["partner"] + "'," +
                         "?date ,'" +
                         rw_det["ibrmat"] + "', '" +
                         rw_det["izlaz_tez"] + "', '" +
                         rw_det["izlaz_kol"] + "')";
MysqlCommand command = new MysqlCommand(query, connection);
command.Parameters.AddWithValue("?date", time);

Doing this you should not have problems with date formatting. I strongly suggest to use parameters instead of string concatenation even for the others parameters of the query ...

Upvotes: 2

Related Questions