【发布时间】:2020-02-03 21:32:35
【问题描述】:
我使用的 Access 数据库具有表 Visits 和字段 VisitDate,其值存储为字符串(例如 01/21/2020)。我需要使用1/20/2020 和1/26/2020 之间的VisitDate 字段值提取所有记录。在过去五天解决这个问题之后,我能做的最好的事情是......
dim WHEREclause as string = " WHERE VisitDate BETWEEN " & ccc & " AND " & ddd
其中ccc 是"01/20/2020",ddd 是"01/26/2020"。这为我提供了 2020 年的正确记录,但它也返回了 2019 年同一时间段的记录。如何解决此问题?
【问题讨论】:
-
使用参数避免sql注入和格式化错误。
-
将日期存储为日期/时间,而不是字符串(如果您希望它工作,那就是)。
-
这是一场多么彻底的灾难。如果可以避免日期,则永远不应将其存储为文本,但如果是,则应以“字母”顺序与时间顺序匹配的格式存储,这通常表示“yyyy-MM-dd”。就目前而言,您不能在此数据上使用
BETWEEN,因为这将创建一个按字母顺序排列的分区,而不是按时间顺序排列的分区。您可以做的是将列值转换为实际日期,例如WHERE CDATE(VisitDate) BETWEEN。我不确定语法是否正确,但您可以检查一下。
标签: sql .net vb.net ms-access between