我的桌子上有一个日期字段," dd / mm / yyyy"格式。
我试图通过使用VBA代码的表单在该字段中插入变量。我有这个:
vardtedate = CDate(Format(Me.dtedate.Value, "dd/mm/yyyy"))
DoCmd.RunSQL "INSERT INTO table (dtedate) VALUES (#" & vardtedate & "#);"
它工作正常,但只有当一天超过12。 如果我尝试插入类似于' 12/06 / 2016'它显示它反转,如' 06/12/2016',该字段将该日期视为12月6日而不是6月12日。我究竟做错了什么?我错过了什么?
我试图进行参数化,问题仍然存在。
答案 0 :(得分:1)
所以我一直在寻找解决方案,我找到了这个帖子Inserting current DateTime into Audit table。显然,当您尝试通过sql语句插入日期值时,它会将不明确的日期格式转换为" mm / dd / yyyy"。我将变量格式化为" yyyy / mm / dd"现在效果很好。
vardtedate = CDate(Format(Me.dtedate.Value, "dd/mm/yyyy"))
DoCmd.RunSQL "INSERT INTO table (dtedate) VALUES (#" & Format(vardtedate, "yyyy-mm-dd") & "#);"
答案 1 :(得分:0)
是的,它与桌面设置的区域设置有关。美国的数据公约与欧洲或其他一些标准完全不同。有关详细信息,请参阅以下链接。
如您所知,设置格式会强制修复。
答案 2 :(得分:0)
CDate(Format(Date.Now,“ MM / dd / yyyy”))