Sql MS access中所有记录的更新年份
在accessSql 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,最后一个订单的
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