在 2 个日期之间选择值
Posted
技术标签:
【中文标题】在 2 个日期之间选择值【英文标题】:Selecting values between 2 dates 【发布时间】:2014-02-20 19:36:31 【问题描述】:我目前正在开发一个提供辅导服务的网站,但我已经在这个问题上停留了很长一段时间..
我有 2 个文本框,用户可以在其中选择开始日期和结束日期,当用户单击视图时,他会假设在网格视图中看到结果。我正在使用 FormParameters 将日期插入到查询中。
sqldatasource的SelectCommand
SelectCommand="SELECT [Session].Session_num AS Num, [Session].Session_Time_Stamp AS Session_Date, Student.Student_First & ' ' & Student.Student_Last AS Student FROM (([Session] INNER JOIN Student ON [Session].Student_Num = Student.Student_Num) INNER JOIN Class ON [Session].Class_ID = Class.Class_ID) WHERE ((([Session].Session_Time_Stamp) Between @firstdate And @seconddate))">
SqlDataSource 的参数
<SelectParameters>
<asp:FormParameter Name="firstdate" Type="DateTime"/>
<asp:FormParameter Name="seconddate" Type="DateTime"/>
</SelectParameters>
这是在用户点击查看按钮时执行的,这是我设置参数值并执行sql select的地方。
Dim fdate As DateTime = Format(CDate(txtStartDate.Text), "MM/dd/yyyy")
Dim ldate As DateTime = Format(CDate(txtEndDate.Text), "MM/dd/yyyy")
gridTutor.SelectParameters("firstdate").DefaultValue = fdate
gridTutor.SelectParameters("seconddate").DefaultValue = ldate
gridTutor.Select(DataSourceSelectArguments.Empty)
gridTutorSessions.DataBind()
fdate 和 ldate 不为空,但执行后查询结果为空。会不会是执行选择的方法不对?
编辑:我意识到问题可能出在查询和日期时间格式上。当我将文本框值转换为 DateTime 时,它就像 #2/20/2014# 一样。但是,即使两个日期之间存在值,它也不会返回任何内容。 如果有人对 DateTime 有访问查询,我想看看。谢谢
【问题讨论】:
那么在您应用参数后实际执行更新的 Select 命令的代码在哪里...?请给我们更多的背景信息。 奇怪的是你得到一个字符串,用CDate把它转换成日期,然后用Format把它转换回一个字符串放在一个日期里面。 我会在 "gridTutor.SelectParameters("firstdate").DefaultValue = fdate" 上添加一个断点,确保实际填充了 firstdate 和 seconddate 的值(不是空白) @the_lotus 这是 VB。人们一直在做各种可怕的事情。我见过很多情况,他们甚至都没有明确地转换任何东西。 @Wayne G. Dunn 感谢您的输入,但仍然没有显示任何内容。 【参考方案1】:我设法通过在我的访问数据库中格式化日期来修复它,这不是最好的解决方案,但它可以解决这种情况
【讨论】:
【参考方案2】:我相信您需要在执行“选择参数”之前手动设置 fdate 和 ldate(即使用“fdate = Format(CDate(txtStartDate.Text), "MM/dd/yyyy")”。根据以下, 以您的方式分配给 Dim 的值不会反映您想要的实时值。请参阅以下有关 VB 的内容:“您可以在创建变量时为其分配值。对于值类型,您使用初始化程序来提供要分配给变量的表达式。表达式必须计算为可以在编译时计算的常量。
【讨论】:
以上是关于在 2 个日期之间选择值的主要内容,如果未能解决你的问题,请参考以下文章