在欧洲格式的两个日期之间选择

Posted

技术标签:

【中文标题】在欧洲格式的两个日期之间选择【英文标题】: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,以进行比较,您需要将它们转换为日期。 【参考方案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

【讨论】:

以上是关于在欧洲格式的两个日期之间选择的主要内容,如果未能解决你的问题,请参考以下文章

Layui日期选择器+两个日期之间天数计算

如何在 MySQL 中的两个日期之间获取特定日期

两个日期之间的Sqlite比较[重复]

%b %d %Y 格式的两个日期之间的差异

如何搜索两个日期之间的记录。但表日期格式是 varchar

如果它在两个不同的日期之间,如何选择今天的日期[重复]