如何将 C# 日期时间转换为预言机时间戳

本文关键字:转换 预言机 时间戳 时间 日期 | 更新日期: 2023-09-27 18:30:34

我正在尝试将 c# 日期时间作为时间戳存储到 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+"'";

如何将 C# 日期时间转换为预言机时间戳

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 注入和类型转换问题。如果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);