我的数据库里字段是datetime类型的查询语句如下: /// <summary>
/// 执行SQL语句,返回DataSet
/// </summary>
/// <param name="SQL">SQL语句</param>
/// <returns></returns>
public DataSet ExecuteSQL_DataSet(string SQL)
{
if (m_Connection == null) return null; DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(SQL, m_Connection);
try
{
if (m_Connection.State == ConnectionState.Open)
m_Connection.Close();
m_Connection.Open();
da.Fill(ds);
}
catch (OleDbException )
{
//throw new Exception(oe.ToString());
}
finally
{
m_Connection.Close();
//m_Connection.Dispose();
da.Dispose();
} return ds;
}
/// <summary>
/// 执行SQL语句,返回DataTable
/// </summary>
/// <param name="SQL">SQL语句</param>
/// <returns></returns>
public DataTable ExecuteSQL_DataTable(string SQL)
{
try
{
DataSet ds = ExecuteSQL_DataSet(SQL);
DataTable result = ds.Tables[0];
return result;
}
catch (Exception)
{
return null;
}
} /// <summary>
/// 终端图片查询
/// </summary>
/// <param name="IpAddress">终端IP</param>
/// <param name="startTime">起始时间</param>
/// <param name="endTime">结束时间</param>
/// <returns></returns>
public TerminalsImages TerminalsImage_Select(string IpAddress, DateTime startTime, DateTime endTime)
{
try
{
TerminalsImages TIs = new TerminalsImages();
string strsql = string.Format("select * from Images where IpAddress in ({0}) and RecTime >= '{1}' and RecTime <= '{2}' order by RecTime", IpAddress, startTime.ToString("yyyy-MM-dd HH:mm:ss"), endTime.ToString("yyyy-MM-dd HH:mm:ss"));
using (DataTable dt = _db.ExecuteSQL_DataTable(strsql))
{ if (dt != null)
{
foreach (DataRow item in dt.Rows)
{
TIs.Add(new TerminalsImage(item));
}
}
return TIs;
}
}
catch (Exception ex)
{
throw ex;
}
}
在调用的时候,发现其中时间的那一列,有些时间DataTable里的结果比数据库里的少了一秒,有些没有,为什么啊?有什么解决办法?
/// 执行SQL语句,返回DataSet
/// </summary>
/// <param name="SQL">SQL语句</param>
/// <returns></returns>
public DataSet ExecuteSQL_DataSet(string SQL)
{
if (m_Connection == null) return null; DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(SQL, m_Connection);
try
{
if (m_Connection.State == ConnectionState.Open)
m_Connection.Close();
m_Connection.Open();
da.Fill(ds);
}
catch (OleDbException )
{
//throw new Exception(oe.ToString());
}
finally
{
m_Connection.Close();
//m_Connection.Dispose();
da.Dispose();
} return ds;
}
/// <summary>
/// 执行SQL语句,返回DataTable
/// </summary>
/// <param name="SQL">SQL语句</param>
/// <returns></returns>
public DataTable ExecuteSQL_DataTable(string SQL)
{
try
{
DataSet ds = ExecuteSQL_DataSet(SQL);
DataTable result = ds.Tables[0];
return result;
}
catch (Exception)
{
return null;
}
} /// <summary>
/// 终端图片查询
/// </summary>
/// <param name="IpAddress">终端IP</param>
/// <param name="startTime">起始时间</param>
/// <param name="endTime">结束时间</param>
/// <returns></returns>
public TerminalsImages TerminalsImage_Select(string IpAddress, DateTime startTime, DateTime endTime)
{
try
{
TerminalsImages TIs = new TerminalsImages();
string strsql = string.Format("select * from Images where IpAddress in ({0}) and RecTime >= '{1}' and RecTime <= '{2}' order by RecTime", IpAddress, startTime.ToString("yyyy-MM-dd HH:mm:ss"), endTime.ToString("yyyy-MM-dd HH:mm:ss"));
using (DataTable dt = _db.ExecuteSQL_DataTable(strsql))
{ if (dt != null)
{
foreach (DataRow item in dt.Rows)
{
TIs.Add(new TerminalsImage(item));
}
}
return TIs;
}
}
catch (Exception ex)
{
throw ex;
}
}
在调用的时候,发现其中时间的那一列,有些时间DataTable里的结果比数据库里的少了一秒,有些没有,为什么啊?有什么解决办法?
SQL server里边datetime保存方式是YYYY-MM-DD HH-SS-MM:XXX
会不会是XXX的部分被四舍五入了???
直接SQL语句查询这个时间字段,看返回值是否会少1秒,
然后在做进一步判断;
你怎么会显示的2009-8-24 17:32:10???