微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不同的 Windows 时间设置是否会干扰 ACCESS 中的 WHERE SQL Date 语句?

如何解决不同的 Windows 时间设置是否会干扰 ACCESS 中的 WHERE SQL Date 语句?

我知道 ACCESS 的时间格式取决于您的 Windows 时间设置。我使用 ISO-8601 格式 (YYYYMMDD),这样我就可以摆脱这样的 sql WHERE 语句:

WHERE dates > #2020/02/15#
  AND dates < #2021/01/30#

如果我在另一台计算机上运行上面的代码,例如 Windows 时间设置为 DDMMYYYY,sql 语句将不再起作用吗?我可以简单地做这样的事情来解决这个问题(会吗?):

  WHERE dates BETWEEN Format(date1,"\#YYYY\/MM\/DD\#") AND Format(date2,"#YYYY\/MM\/DD\#")

编辑:正如@Gustav 所指出的那样,时间格式已经发生了变化。问题仍然存在;第一个 WHERE 语句将不再适用于不同的 Windows 时间设置吗?第二个会解决问题吗?

解决方法

在 Access SQL 中,使用 octothorpes:

WHERE dates > #2020/02/15#
  AND dates < #2021/01/30#

WHERE dates BETWEEN Format(date1,"\#YYYY\/MM\/DD\#") AND Format(date2,"#YYYY\/MM\/DD\#")
,

不,Windows 时间设置会干扰很多事情,但不会影响排序或与日期的比较。

只要该字段被定义为日期(就像古斯塔夫所说的那样,octothorpes 就是这样),2021 年 2 月 2 日将小于 2021 年 2 月 11 日,即使如果您投射它们,情况就不会如此先到一个字符串。

过滤时总是尽量保持列的原样,所以如果日期实际上是一个日期列(而不是格式化的字符串),只需使用 WHERE dates BETWEEN #2020/02/15# AND #2021/01/30#,没有格式,没有时髦的东西。请注意,尤其是在尝试让您的应用程序在所有语言环境下都能正常工作时,避免将日期强制转换为字符串非常重要,如果将日期与格式化字符串进行比较,就会发生这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。