【问题标题】:MS Access Date/Time format issue?MS Access 日期/时间格式问题?
【发布时间】:2017-10-04 17:12:37
【问题描述】:

这可能是重复的,但我对 MS Access DB 有一个奇怪的问题。

当我为我的列 req_date 更新 日期/时间 值时,我遇到了问题。

10-03-2017

更新如下

10-03-2017

在哪里

10-18-2017

更新如下

18-10-2017

我在 c# 中使用以下代码来执行查询:

query = "update gb_jobs set req_delivery=myDate"
myCMD = new OleDbCommand(query, con, trans);
int tempCnt = myCMD.ExecuteNonQuery();

其中 myDate 已经从日期时间转换为字符串,

根据 Albert 的解决方案,我将 myDate 连接到 #myDate# 但它引发了以下错误:

query = "update gb_jobs set req_delivery=#myDate#"

Error : Data type mismatch in criteria expression.

【问题讨论】:

  • 点评this page
  • 这有点帮助,但找不到确切的答案。感谢任何方式z :)

标签: ms-access


【解决方案1】:

您没有提及更新相关列的地点/时间/方式。

作为一般规则,如果 VBA 变量类型是实际的 DATE 类型变量,那么您可以将这些值直接分配给代码中的控件或记录集。

但是,如果您的任何代码使用字符串结果,那么无论您的计算机的区域设置如何,您都必须将字符串格式化为 USA 格式。因此,您的区域设置会将日期显示转换为您的船漂浮的任何内容。

因此,您的任何日期格式都必须是 mm/dd/yyyy。鉴于您的示例,您似乎正在遵循该格式。这表明您将 DISPLAY 设置为 DD/MM/yyyy。所以理论上你到目前为止给出的是正确的行为。

这表明您的 10-03-2017 结果实际上意味着 03/10/2017。所以实际上是三月而不是十月。

因此在 VBA 代码中更新(或查询)一些数据,你必须去:

dtStart    as date
dtEnd      as date

如果你设置了以上两个日期的值,那么要查询数据,你必须去:

strWhere = "InvoiceDate >= #" & format(dtStart,'mm/dd/yyyy') & "#" & _
       " and InvoiceDate <= #" & format(dtEnd,"mm/dd/yyyy") & "#"

Docmd.OpenReport "rptInvoice",acViewPreview,,strWhere

因此,任何将使用 SQL 查询或更新值的代码都必须将数据重新格式化为美国格式 (mm/dd/yyyy)。控件和表单将显示的内容与您在 Windows 区域面板中的内容相同,但所有内部代码都必须将字符串格式化为 mm/dd/yyyy。

因此不清楚您是如何进行更改的,但从您目前提供的信息来看,您的信息显示是 dd/mm/yyyy,但是您输入的数据是正确的 mm/dd/yyyy。如果您在表单上输入此数据而不使用代码,那么您给出的日期格式由 windows 设置为 dd/mm/yyyy。

【讨论】:

  • 感谢您的解决方案,但我的应用程序使用的是 c#,那么作为前缀和后缀的 '#' 在 c# 中也可以使用吗?
猜你喜欢
  • 2011-02-07
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 2021-12-19
  • 2018-09-23
  • 1970-01-01
相关资源
最近更新 更多