如果开始日期和结束日期跨越一个或多个月,则插入表中时,日期格式会更改

1 ms-access date ms-access-2013

我有一个Access 2013表单,其中有两个未绑定的日期字段,FromDate和ToDate。我将它们插入具有自动编号键字段的表(TblGuestBooking)中,因此在后面的SQL语句中没有此功能。

如果FromDate和ToDate在同一月份,则日期输入为dd / mm / yy,即表单字段的格式。但是,如果起始日期在一个月内,而截止日期在下个月或下个月,则后续月份的格式将更改为mm / dd / yy。

例如,26/2/14到3/3/14产生以下表条目:

26/02/14,
27/02/14,
28/02/14,
14年3月1日,
14年3月2日,
14年3月3日

这是我用来将日期放入表格中的代码片段(BookingID是从表单获取的。)

Dim BookingDate As Date

Dim SQLString As String

....

BookingDate = FromDate

Do
    SQLString = "INSERT INTO TblGuestBooking ([BookingDate], [BookingID])  VALUES (#" & BookingDate & "#" & "," & Me.GuestSuiteBookingID & ")"

    DoCmd.SetWarnings False
    DoCmd.RunSQL SQLString
    DoCmd.SetWarnings True
    BookingDate = BookingDate + 1
Loop Until BookingDate = ToDate + 1
Run Code Online (Sandbox Code Playgroud)

如果您已经阅读了本文,则感谢您的宝贵时间。如果您能帮助我,非常感谢。

Gor*_*son 5

在处理日期文字(由“井号”括起来的文本值#)时,无论计算机上的区域设置如何,Access SQL 始终会将不明确的xx-yy-zzzz日期解释为mm-dd-yyyy。因此,如果您的计算机配置为将短日期显示为,dd-mm-yyyy并且您创建使用#04-02-2014#它的Access查询,则始终将其解释为4月2日,而不是2月4日。

解决方案是始终将日期文字格式化为明确的yyyy-mm-dd值。在您的情况下,

... VALUES (#" & BookingDate & "#" ...
Run Code Online (Sandbox Code Playgroud)

你会用类似的东西

... VALUES (#" & Format(BookingDate, "yyyy-mm-dd") & "#" ...
Run Code Online (Sandbox Code Playgroud)