我有一个奇怪的问题...我有一个带有一些列的MySql数据库,其中一列是date_purchased,类型为date_time。
我正在使用C#并制作了一个DatetimePicker,用户选择了一个日期。
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
varDate = dateTimePicker1.Value;
}
现在问题是我必须比较两个日期时间(一个来自数据库,另一个来自用户),我应该显示小于用户选择的日期的记录(varDate)。
select * from orders where date_purchased < = '" + varDate + "'";
我正在执行此查询,但我收到异常
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '12/25/2011 8:01:31 PM'' at line 1
我写了连接字符串和所有,我对查询感到震惊。 任何帮助都感激不尽... 谢谢, Subash
答案 0 :(得分:0)
尝试像DBdatetime&lt; “'”+ vardate +“'”
提醒一句,检查两个日期的格式。我在以前的应用程序中遇到问题,其中数据库有秒和毫秒,而应用程序只提供数据并将时间设置为00:00。这导致当前日期的记录未显示在结果集中。因此,我必须在日期中添加23:59以获取当天的所有记录。
答案 1 :(得分:0)
您可以使用以下 MySQL查询
检索两个数据之间的值SELECT * FROM table_name WHERE dbvalue < varData
答案 2 :(得分:0)
您尚未提供有关运行select查询的内容的任何详细信息;但是,如果您使用的是Mysql(Connector / Net)提供的连接器,那么您应该使用参数。看起来像这样:
String sql = "select * from orders where date_purchased < @DatePurchased";
MySqlDataAdapter adapter = new MySqlDataAdapter(sql, connection);
adapter.SelectCommand.Parameters.Add("DatePurchased", MySqlType.DateTime).Value = varDate;
adapter.Fill(dataSet);
使用参数将确保转换值并且还会阻止SQL Injections