我使用以下表达式在导出数据之前格式化msaccess查询中的日期
Expr1: Right$([order details]![requested delivery date],4)+Mid$([order details]![requested delivery date],4,2)+Mid$([order details]![requested delivery date],1,2)
这会从我的表格订单详细信息(例如2012年9月9日)中获取一般日期并将其转换为20120911或至少是我想要它做的事情
不幸的是我得到的输出是20129/11,这是一个我无法使用的腐败
你可以看到09已被神奇地改为9 /并且我不明白为什么以及为什么
有人可以告知正确的表达方式应该是什么,或者是否需要对基础数据表进行任何更改。
我在表格中使用了一般日期格式 - 这个表达式之前工作正常,但现在开始给我一个问题,因为拆分数据库和使用attatched表 - msaccess版本是2003
任何建议都将受到赞赏
感谢
答案 0 :(得分:1)
如果[order details]
字段的数据类型为日期/时间,则可以更轻松地使用Format()
表达式格式化日期。
Format([order details], "yyyymmdd")
答案 1 :(得分:1)
尝试使用格式化功能:
Expr1: Format ([order details]![requested delivery date], "yyyymmdd")
对于原始问题中的代码,没有“魔法”,只是从“9”开始的两个字符是“9 /”。
假设字段类型为DATETIME。如果没有,你应该改变它。
答案 2 :(得分:1)
从字符串中操作日期是一个非常糟糕的主意。
首先,您必须处理月份位置的变化,例如“1/1/2012”和“10/10/2012”。
然后,您必须处理以下事实:Access返回的字符串高度依赖于为列指定的格式,并且该格式会根据客户端的区域设置而更改。
此外,Access了解并可能以美国格式返回日期:m/d/yyyy
。
要解决您的问题,请明确使用SQL和Access提供的日期和格式设置功能来操作日期
在您的情况下,我认为您只需要Format()
函数:
Format([order details]![requested delivery date], "yyyymmdd")
如果您的20120911
是11SEP2012,则会返回[requested delivery date]
。
如果您的[requested delivery date]
被定义为字符串,请确保其包含有效日期,并使用CDate()
将其转换为正确的日期:
Format(CDate([order details]![requested delivery date]), "yyyymmdd")
如果此列设置为允许Null值,则需要测试:
Iif(IsNull([order details]![requested delivery date]), Null, Format(CDate([order details]![requested delivery date]), "yyyymmdd"))
有关日期操作的更多信息,请查看以下文章: