You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Visual Studio 2015中使用DateTimePicker编写Between日期过滤SQL查询求助

解决DateTimePicker日期范围筛选的SQL查询问题

先帮你梳理下现有代码里的几个问题:

  • 拼写错误:BEETWEEN 被写成了 BEETWEEN(多了个E)
  • Between语法误用:正确格式是 字段名 BETWEEN 起始值 AND 结束值,不需要重复写字段名
  • 直接拼接日期字符串可能导致格式不兼容,还存在SQL注入风险

修正后的基础语法写法(仅做语法修复,不推荐用于生产环境)

先把语法改对,注意不同数据库的日期包裹符:Access用#,SQL Server用单引号',这里以Access为例:

Call KONEKSI()
CMD = New OleDbCommand("SELECT * FROM Pembayaran WHERE tanggal_pembayaran BETWEEN #" & DTPDari.Value.ToString("yyyy-MM-dd") & "# AND #" & DTPSampai.Value.ToString("yyyy-MM-dd") & "#", CONN)
DR = CMD.ExecuteReader()
DR.Read()

要是用的是SQL Server等数据库,把代码里的#替换成单引号'即可。

推荐写法:参数化查询(安全且避免格式坑)

直接拼接字符串有SQL注入风险,用参数化查询能彻底规避这个问题,还不用纠结日期格式适配:

Call KONEKSI()
CMD = New OleDbCommand("SELECT * FROM Pembayaran WHERE tanggal_pembayaran BETWEEN @StartDate AND @EndDate", CONN)
' 绑定日期参数
CMD.Parameters.AddWithValue("@StartDate", DTPDari.Value.Date)
CMD.Parameters.AddWithValue("@EndDate", DTPSampai.Value.Date)
DR = CMD.ExecuteReader()
DR.Read()

补充个小细节:如果你的tanggal_pembayaran字段包含时间部分,用.Date属性可以只取日期部分,确保筛选的是完整的日期范围(不会漏掉当天晚些时候的数据)。

内容的提问来源于stack exchange,提问作者lihenz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:01:28