Sql MS access中所有记录的更新年份

Sql MS access中所有记录的更新年份,sql,ms-access,ms-access-2010,Sql,Ms Access,Ms Access 2010,在accessLAST\u ORDER\u DT和SALE\u DT 我想将所有销售日期(销售日期)的年份更新为上次订单日期的年份 我尝试了下面的语句,它抛出了语法错误 UPDATE ORDERS_TEMP SET YEAR(SALE_DT)=YEAR(LAST_ORDER_DT) 请帮忙。据我理解你的问题,你可能会有一个销售的2011-09-30,最后一个订单的

在access
LAST\u ORDER\u DT
SALE\u DT
我想将所有销售日期(销售日期)的年份更新为上次订单日期的年份

我尝试了下面的语句,它抛出了语法错误

UPDATE ORDERS_TEMP SET YEAR(SALE_DT)=YEAR(LAST_ORDER_DT)

请帮忙。

据我理解你的问题,你可能会有一个
销售
2011-09-30
,最后一个订单的
<2012-10-10
,你想把
销售
改为
\2012-09-30

如果是这种情况,您可以使用
DateSerial()
函数从适当的年、月和日值重构
SALE\u DT

UPDATE ORDERS_TEMP
SET SALE_DT =
    DateSerial(
        Year(LAST_ORDER_DT),
        Month(SALE_DT),
        Day(SALE_DT)
        );
如果您的
SALE\u DT
值的一天时间是午夜,那么这应该有效。如果一天中的时间是其他时间,您也需要添加该部分

UPDATE ORDERS_TEMP
SET SALE_DT =
    DateSerial(
        Year(LAST_ORDER_DT),
        Month(SALE_DT),
        Day(SALE_DT)
        )
    + TimeValue(SALE_DT);
如果
SALE\u DT
LAST\u ORDER\u DT
可以包含空值,则应从
更新查询中排除这些行:

WHERE SALE_DT Is Not Null AND LAST_ORDER_DT Is Not Null

我理解你的问题,你可能有一个
SALE_DT
#2011-09-30#
,最后一个订单是
#2012-10-10#
,你想把
SALE_DT
改为
#2012-09-30#

如果是这种情况,您可以使用
DateSerial()
函数从适当的年、月和日值重构
SALE\u DT

UPDATE ORDERS_TEMP
SET SALE_DT =
    DateSerial(
        Year(LAST_ORDER_DT),
        Month(SALE_DT),
        Day(SALE_DT)
        );
如果您的
SALE\u DT
值的一天时间是午夜,那么这应该有效。如果一天中的时间是其他时间,您也需要添加该部分

UPDATE ORDERS_TEMP
SET SALE_DT =
    DateSerial(
        Year(LAST_ORDER_DT),
        Month(SALE_DT),
        Day(SALE_DT)
        )
    + TimeValue(SALE_DT);
如果
SALE\u DT
LAST\u ORDER\u DT
可以包含空值,则应从
更新查询中排除这些行:

WHERE SALE_DT Is Not Null AND LAST_ORDER_DT Is Not Null