【问题标题】:How to convert String like "June 20, 2019" to Date format in order to Selct a date Range如何将“2019 年 6 月 20 日”等字符串转换为日期格式以选择日期范围
【发布时间】:2019-07-26 10:08:36
【问题描述】:

我有一个 Access 表,其中包含如下字符串:

  Date Created                Date Modified
  January 31, 2019            January 31, 2019
  March 08, 2019              March 09, 2019
  April 19, 2019              April 23, 2019

我希望能够使用 sql 查询在 2 个日期之间选择一个日期范围。

我正在使用Jet4.0 引擎和VB6

非常感谢任何帮助

我试过这个:

但这不会删除任何记录。

Set cijb = DBEngine.Workspaces(0).OpenDatabase(PathCIJB())

   DELETE Job.* FROM Job WHERE(Job.DateModified >= 'January 03, 2019' ) AND 
   (Job.DateModified <= 'February 05, 2019' )

  Set rs = cijb.OpenRecordset(sql, dbOpenSnapshot)

我希望删除所有修改的记录,例如从 March 09, 2019April 23, 2019

【问题讨论】:

  • date modified的数据类型是什么?
  • 您应该立即将这些文本字段转换为数据类型为 DateTime 的字段。事实上,它只会给你带来永远的麻烦。

标签: sql ms-access vb6 jet


【解决方案1】:

您将字符串与字符串进行比较。并且没有条件当'J'出现在'F'之前,所以WHERE总是false

在比较之前,您应该通过CDate 函数进行显式转换:

CDate 根据您的语言环境设置识别日期格式 系统。日、月、年的正确顺序可能不正确 确定它是否以不同于以下格式之一的格式提供 公认的日期设置。此外,长日期格式不是 识别它是否还包含星期几字符串。

同样运行SQL命令查询你不能使用OpenRecordset

    Set cijb = DBEngine.Workspaces(0).OpenDatabase(PathCIJB())

    cijb.Execute "DELETE Job.* FROM Job " & _ 
                 "WHERE (CDate(Job.DateModified) >= CDate('January 03, 2019')) AND (CDate(Job.DateModified) <= CDate('February 05, 2019'));"

【讨论】:

  • 谢谢你,虽然我没有尝试过你的解决方案,但我相信它会得到我需要的东西。感谢您的帮助
猜你喜欢
  • 2020-03-07
  • 1970-01-01
  • 2015-04-29
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
相关资源
最近更新 更多