【问题标题】:VB.net, how to select date between 2 dateVB.net,如何在 2 个日期之间选择日期
【发布时间】:2015-10-03 10:46:16
【问题描述】:

如何使用 datetimepicker 在 2 个日期之间选择日期。

我正在使用

SELECT * 
FROM data BETWEEN '"& datetimepicker1.value &"' AND '"& datetimepicker2.value &"'

【问题讨论】:

  • 这段代码在什么方面没有按预期工作?生成的 SQL 语句是什么,执行时会发生什么?
  • 你忘记了什么...from data where date_column between ...
  • 将两个日期都转换为类似于数据库中的格式,否则将不起作用。通过格式,我的意思是秒或分钟。 SQL 无法比较两个字符串之间的值。它必须是整数、双精度或数值

标签: sql .net vb.net date


【解决方案1】:

在 SQL 查询中连接参数是非常糟糕的做法。使用特殊的参数语法。

回到你的问题: 查询应如下所示:

SELECT * from data WHERE someField BETWEEN @Low AND @High

和代码:

command.Parameters.Add("@Low", SqlDbType.Int); //set correct type
command.Parameters["@Low"].Value = low;

command.Parameters.Add("@High", SqlDbType.Int);//set correct type
command.Parameters["@High"].Value = high;

【讨论】:

    【解决方案2】:

    补充以上答案:

    1) 您必须具有与 SQL 格式相同的日期,包括秒(或不包括秒)。字符串必须相同。您也可以尝试将 00:00:00 设为开始时间,将 23:59:59 设为结束时间。

    2) 您必须使用从字符串到日期的转换,因为您的字段在 SQL 中是 DATE。

    试试:

    SELECT * from data WHERE someField BETWEEN Convert(datetime, "01/01/1980 00:00:00", 120) AND Convert(datetime, "03/10/2015 23:59:59", 120)
    

    看上面的“120”:它是 SQL 格式的日期/时间。检查可用的格式以在您的 SQL 版本中转换日期和时间。

    【讨论】:

    • 所以,如果我使用 datetimepicker,语法是否像 -> Convert(datetime, "datetimepicker1.text", 120) ??
    • 没有。使用“Convert(datetime, datetimepicker1.value, 120)”获取控件的值(参见 is no”),但请记住:如果您的 SQL 字段包含时间,您还需要在过程中指定时间。您可以利用 OR datetimepicker.CustomFormat 设置诸如“dd/MM/yyyy hh:mm:ss”之类的内容,甚至添加诸如 datetimepicker.text 和“00:00:00”之类的时间。
    猜你喜欢
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    相关资源
    最近更新 更多