如何将c#datetime转换为oracle时间戳?

时间:2016-01-16 09:27:05

标签: c# oracle datetime

我正在尝试将c#datetime存储到oracle数据库中,因为它存储的时间戳没有问题,但是当我尝试从数据库中选择该特定日期的数据时,它给出了错误,因为它无效月份。

DateTime sessiondate =DateTime.Now();
int userid_int = 101;
string userTypeis ='ENGINEER';

string get_Log_query = "SELECT LOG_ID FROM JOINTING_LOGIN_LOG where USER_ID="+userid_int+" and USER_TYPE='"+userTypeis+"' and SESSION_START='"+sessiondate+"'";

1 个答案:

答案 0 :(得分:5)

string get_Log_query = "SELECT LOG_ID FROM JOINTING_LOGIN_LOG where USER_ID="+userid_int+" and USER_TYPE='"+userTypeis+"' and SESSION_START='"+sessiondate+"'";

您永远不应该使用字符串连接来构建带参数的查询。参数化查询将更快,并帮助您避免SQL Injection和类型转换的麻烦。如果SESSION_START确实是时间戳,那么您的代码将是 -

string get_Log_query = 
    @"SELECT LOG_ID 
        FROM JOINTING_LOGIN_LOG 
       WHERE USER_ID= :USER_ID 
         and USER_TYPE= :USER_TYPE 
         and SESSION_START= :SESSION_START";

 cmd.Parameters.Add("USER_ID", OracleDbType.Decimal, userid_int, ParameterDirection.Input);
 cmd.Parameters.Add("USER_TYPE", OracleDbType.Varchar2, userTypeis, ParameterDirection.Input);
 cmd.Parameters.Add("SESSION_START", OracleDbType.TimeStamp, sessiondate, ParameterDirection.Input);