我有一个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);
答案 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;))