DST到UTC附加查询在访问中创建类型转换错误

时间:2011-12-16 06:38:42

标签: ms-access ms-access-2007 ms-access-2010

我有一个表我正在使用的表作为追加查询的源,它调用表查询,该查询调用联合查询以有效地调整东部流行时间以向前弹回并在转换为utc时回退。表中只有三个字段,但我一直得到“访问没有导入....由于类型转换”。请帮帮我!!!提前谢谢

下面是访问sql:

{追加查询}

INSERT INTO somePrice ( price )
SELECT DTQuery.Price
FROM DTQuery
WHERE (((DTQuery.EPT)<>[2ndsunday]));

{DTQuery}

SELECT 
      TransposeQuery.Field3 AS [Zone]
    , DateSerial(Left([field1],4),Left(Right([field1],4),2),Right([field1],2))+[TransposeQuery]![Hour]/24 AS EPT, Val([Field8]) AS Price
    , DateValue(DateSerial(Year([EPT]),3,14))-(Weekday(DateValue(DateSerial(Year([EPT]),3,14)),1)-1)+3/24 AS 2ndSunday
    , DateValue(DateSerial(Year([EPT]),11,7))-(Weekday(DateValue(DateSerial(Year([EPT]),11,7)),1)-1)+3/24 AS 1stSunday
FROM TransposeQuery
ORDER BY 
      TransposeQuery.Field3
    , DateSerial(Left([field1],4),Left(Right([field1],4),2),Right([field1],2))+[TransposeQuery]![Hour]/24, Val([Field8]);

1 个答案:

答案 0 :(得分:0)

首先是一些常见的东西:如果你想在时区之间进行转换,这需要增加或减去你可能想要用于DateAdd函数的小时数。

DateAdd("h", -2, [SourceDateTime])

这只需要两个小时的SourceDateTime字段。

除了使用Left(Right(组合,您还可以使用Mid(字符串,开头,长度)

Mid("1234567890", 2, 4)

返回2345,但如果您正在处理日期,请使用DatePart

DatePart("h", "17/12/2011 08:10")

返回8.


至于类型转换错误,很难说你没有给我们目的地表中的字段类型。

如果在没有第一行的情况下运行追加查询,则将排除目标表。如果它仍然失败,那么它可能在where子句中,因此将字段移动到结果集中并确保它们是相同的类型。如果它仍然失败,那么它必须在源查询中,因此检查DTQuery打开没有任何问题。