【问题标题】:dd/mm automatically got changed to mm/dddd/mm 自动更改为 mm/dd
【发布时间】:2020-07-11 17:29:38
【问题描述】:

我在 Access VBA 中使用 Date 语句编写了一些代码。直到本月初它工作正常,但现在我看到日期已自动将格式从 dd/mm/yyyy 更改为 mm/dd/yyyy。有没有其他人遇到过同样的问题?

【问题讨论】:

    标签: vba ms-access ms-office


    【解决方案1】:

    无论区域设置如何,默认的 Access SQL 日期格式都是 mm/dd/yyyy。如果您使用无效的日期格式,它会“有帮助地”尝试将其转换为您的有效日期。

    因此,如果您使用“30/09/2008”,它会识别出您正在使用 dd/mm/yyyy,并进行适当的转换。但是,像 '10/01/2008' 这样的值是一个有效的 mm/dd/yyyy 值,因此它不会被转换,并且存储不正确,以防您实际上是指 dd/mm/yyyy ....

    解决方案是始终将日期值转换为 mm/dd/yyyy 字符串,然后再在 Access SQL 语句中使用它们。您必须在这里小心一点,因为使用 VBA 日期格式掩码可能无法完全按照您在非美国语言环境中的预期工作(例如,“有帮助”将“mm/dd/yyyy”解释为“本地化短日期格式” ),因此请使用您的特定 Access/VBA 版本仔细测试。

    【讨论】:

    • 谢谢@mdb,你是对的。我正在非美国语言环境中编码。
    • Access 没有 SQL 版本,但 Jet 有,所以你的意思是“默认的 Jet SQL 日期格式......”
    • 另一种解决方案是使用明确的日期格式,例如 yyyy/mm/dd 或 dd-mmm-yyyy。
    • 我也会选择年、月、日格式作为最安全的格式。
    【解决方案2】:

    访问需要一个明确的日期。通常建议您使用 yyyy/mm/dd,无论语言环境如何。例如:

    strSQL="SELECT SomeDate FROM tblT WHERE SomeDate=#" & Format(DateVar, "yyyy/mm/dd") & "#"
    

    【讨论】:

      【解决方案3】:

      试试这个代码:

      stLinkCriteria = "[ProjectDate] Between #" & Format(CDate(Me![txtDateFrom]), "mm/dd/yyyy") & "# And #" & Format(CDate(Me![txtDateTo]), "mm/dd/yyyy") & "#"
      

      它对我有用。

      【讨论】:

        【解决方案4】:

        我使用 datevalue() 函数非常成功。从未绑定控件获取日期时,它似乎足够聪明地正确解释格式“dd/mm/yyyy”。因此,像

        这样的 Jet SQL 查询

        "Select * from DateTable where StartDate = datevalue(" & me!TxtStartDate & ");"

        似乎每次都有效。

        【讨论】:

        • 那不会像 DateSerial(Year(Me!TxtStartDate), Month(Me!TxtStartDate), Day(Me!TxtStartDate)) 一样可靠。
        【解决方案5】:

        这行得通:

        sentenciaSQL = "UPDATE Numeraciones " & _
        "SET Valor = " & Valor & ", " & _
        "Fecha = #" & **Format(fecha,"mm/dd/yyyy HH:nn:ss") & "#, " &** _
        "Id_Usuario = " & Id_Usuario & _
        " WHERE Nombre = '" & Nombre & "'"
        

        【讨论】:

          猜你喜欢
          • 2022-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多