比较Datetimepicker中的两个Datetimes和MySql Database中的一个

时间:2012-01-01 18:37:33

标签: c# mysql datetime

我有一个奇怪的问题...我有一个带有一些列的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

3 个答案:

答案 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