当我尝试向Oracle插入日期和时间时得到ORA-01843

Gol*_*old 3 c# sql oracle plsql ora-01843

我有一个字符串格式的anb B.

A = 14/01/2007

B = 22:10:39

我尝试插入日期和时间:

SQL = "insert into MyTbl(Tdate,Ttime) value ('" + Convert.ToDateTime(A) + "','" + Convert.ToDateTime(B) + "')";
Run Code Online (Sandbox Code Playgroud)

我有ORA-01843错误,我能做什么?

提前致谢

Jon*_*eet 8

不要使用原始SQL来插入值.请改用参数化查询.以正常方式将字符串解析为.NET DateTime(或DateTimeOffset)和TimeSpan值,然后使用如下内容:

string sql = "insert into MyTbl(Tdate,Ttime) values (:date, :time)";
using (OracleCommand cmd = new OracleCommand(sql, connection))
{
    cmd.CommandType = CommandType.Text;
    cmd.Parameters.Add("date", OracleType.DateTime).Value = date;
    cmd.Parameters.Add("time", OracleType.IntervalDayToSecond).Value = time;
    cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

(显然会根据实际字段的类型进行调整.)