OleDbDataAdapter UPDATE查询将日期类型与字符串进行比较

时间:2014-06-24 18:08:28

标签: c# sql string date

我有一个OleDbDataAdapte r正在对数据库执行UPDATE。 在我正在更新的表上,我有一个名为"Temp_date"的列,其中包含mm/dd/yyyy格式的日期。 有什么方法可以将表中的字符串与实际的DateTime(当前日期)进行比较吗?我的目的是,如果表中存储的日期低于当前日期,则删除旧值。我非常感谢您的帮助或建议!

以下是我的代码:

OleDbDataAdapter adapter3 = new OleDbDataAdapter();
adapter3.UpdateCommand = conexiuneBD.CreateCommand();
adapter3.UpdateCommand.CommandText = "UPDATE table SET Occupied=No, Temp_date=? WHERE Temp_date<?";
adapter3.UpdateCommand.Parameters.AddWithValue("p1", DBNull.Value);
adapter3.UpdateCommand.Parameters.AddWithValue("p2", current_date);

1 个答案:

答案 0 :(得分:0)

如何首先转换日期并将常量值传递给比较?

OleDbDataAdapter adapter3 = new OleDbDataAdapter();
adapter3.UpdateCommand = conexiuneBD.CreateCommand();
string convertedDate = ConvertDateToAccessFormat(current_date);
adapter3.UpdateCommand.CommandText = "UPDATE table SET Occupied=No, Temp_date=? WHERE Temp_date<" + convertedDate;
adapter3.UpdateCommand.Parameters.AddWithValue("p1", DBNull.Value);
adapter3.UpdateCommand.Parameters.AddWithValue("p2", current_date);

或者你可以把它分为两部分。首先,从数据库中获取Temp_date的当前值,并且只有当它小于您的预期新日期时才会调用更新代码。

或者您可以使用访问字符串到日期的转换:

UPDATE table SET Occupied=No, Temp_date=? WHERE cDate(Format(Temp_date,"yyyy-MM-dd hh:mm:ss")) < ?

而且顺便说一下,如果Temp_date存储为字符串,你是不是必须以字符串形式发送?在这种情况下,您必须转换这两个值才能将它们作为日期进行比较。像这样的东西?

UPDATE表SET Occupied = No,Temp_date =? WHERE cDate(格式(Temp_date,&#34; yyyy-MM-dd hh:mm:ss&#34;))&lt; cDate(格式(?,&#34; yyyy-MM-dd hh:mm:ss&#34;))