【问题标题】:Compare two Datetimes one from Datetimepicker and one from MySql Database比较两个日期时间,一个来自 Datetimepicker,一个来自 MySql 数据库
【发布时间】:2012-01-31 11:00:23
【问题描述】:

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

我写了连接字符串和所有内容,我对查询感到震惊。 任何帮助都感激不尽... 谢谢, 子目录

【问题讨论】:

  • 您能提供更多信息吗?例如:表结构、您需要选择的内容等。顺便说一下,“Date_time”不是有效的 mySQL 数据类型,您的意思是“日期时间”对吗?
  • 您是否尝试过转换为相同的类型,然后进行比较?

标签: c# mysql datetime


【解决方案1】:

您没有详细说明您使用什么来运行选择查询;但是,如果您使用的是 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

【讨论】:

    【解决方案2】:

    尝试类似 where DBdatetime

    请注意,检查两个日期的格式。我在以前的应用程序中遇到了一个问题,其中数据库有秒和毫秒,而该应用程序只提供了一个数据并将时间设置为 00:00。这导致当前日期的记录未显示在结果集中。因此,我必须在日期上加上 23:59 才能获取当天的所有记录。

    【讨论】:

      【解决方案3】:

      您可以使用以下 MySQL 查询

      检索两个数据之间的值
      SELECT * FROM table_name WHERE dbvalue < varData
      

      【讨论】:

        猜你喜欢
        • 2019-05-28
        • 1970-01-01
        • 1970-01-01
        • 2021-02-18
        • 1970-01-01
        • 1970-01-01
        • 2013-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多