【问题标题】:Select between two dates in European Format在欧洲格式的两个日期之间选择
【发布时间】:2014-02-20 21:07:48
【问题描述】:

当我尝试选择 2 月和 3 月之间的记录时,以下查询未返回任何结果。

这是我正在使用的查询:

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM data WHERE  CONVERT(VARCHAR(50),data,105) BETWEEN  CONVERT(VARCHAR(50),'" + dateTimePicker1.Text + "',105) AND CONVERT(VARCHAR(50),'"+dateTimePicker3.Text+"',105)", conn);
  • data 是 VARCHAR(50) 类型,我想将其转换为 dd-MM-yyyy 格式

【问题讨论】:

  • 不比较转换为VARCHAR的日期,在比较之前将两个日期都转换为DATETIME
  • 数据列是VARCHAR(50)
  • @user2989408 我无法理解你,你能输入查询吗?你的意思是不要转换两个日期?
  • @VladimirOselsky 其 dd-mm-yyyy (24-2-2013)
  • 向我们展示一些示例数据,并且您正在将日期转换为VARCHAR,以进行比较,您需要将它们转换为日期。

标签: c# sql sql-server date between


【解决方案1】:

你的 SQL 应该是这样的

 SELECT * FROM data 
 WHERE  CONVERT(datetime, data, 105)  >= CONVERT(datetime, '01-01-2014', 105) 
     AND  CONVERT(datetime, data, 105) <= CONVERT(datetime, '01-31-2014', 105)

【讨论】:

  • 仍然有效,当我想选择从 01-02-2014 到 01-03-2013 的数据时,它什么也没显示:(
  • 兄弟,非常感谢你它现在可以工作了我想我会更多地测试它,你只是忘记将 (VARCHAR(50),'"+datetimepicker3.text+"',105) 更改为 (datetime , '" + dateTimePicker3.Text + "', 105)
  • 很高兴它成功了。我只是展示了你可以相应地将其转换为 C# 的 SQL。
  • @user3334406 我强烈建议您也使用参数化查询。
【解决方案2】:

我将使用来自DatePickerdate 值一旦将所有内容转换为Date SQL 将不会有比较 mm-dd-yyyy 和 dd-mm-yyyy 的问题

SELECT * 
FROM MyTable
WHERE CONVERT(DATE,MyStringDate,105) >= dateTimePicker1.Value.Date
AND CONVERT(DATE,MyStringDate,105) <= dateTimePicker.Value.Date

【讨论】:

    【解决方案3】:

    您的转化次数过多。 SQL 将很难在 VARCHAR 类型上确定 BETWEEN

    改为将内容转换为 DATEDATETIME(取决于您的 SQL Server 版本和类型)

    您还应该使用参数化查询来避免 SQL 注入。

    这样的事情会很好用:

    using (var da = new SqlDataAdapter())
    {
        da.SelectCommand.CommandText = 
             "SELECT * FROM data WHERE CONVERT(datetime, data, 105) >= @Date1 AND CONVERT(datetime, data, 105) <= @Date2";
        //Use the DateTimePicker's Value property here, not the Text Property
        da.SelectCommand.Parameters.AddWithValue("@Date1", dateTimePicker1.Value);
        da.SelectCommand.Parameters.AddWithValue("@Date2", dateTimePicker3.Value);
        da.Fill(yourDataTable); //Or whatever you're doing
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-08
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多