我有两个日期/时间列可供访问LAST_ORDER_DT
,SALE_DT
我想将所有销售dates(SALE_DT)
的年份更新为LAST_ORDER_DT
我尝试了以下语句,它抛出了语法错误。
UPDATE ORDERS_TEMP SET YEAR(SALE_DT)=YEAR(LAST_ORDER_DT)
请帮忙。
我有两个日期/时间列可供访问LAST_ORDER_DT
,SALE_DT
我想将所有销售dates(SALE_DT)
的年份更新为LAST_ORDER_DT
我尝试了以下语句,它抛出了语法错误。
UPDATE ORDERS_TEMP SET YEAR(SALE_DT)=YEAR(LAST_ORDER_DT)
请帮忙。
据我了解您的问题,您可能有 a SALE_DT
of#2011-09-30#
和 a LAST_ORDER_DT
of #2012-10-10#
,并且您想SALE_DT
更改为#2012-09-30#
.
如果是这种情况,您可以使用该函数从适当的年、月和日值DateSerial()
进行重构。SALE_DT
UPDATE ORDERS_TEMP
SET SALE_DT =
DateSerial(
Year(LAST_ORDER_DT),
Month(SALE_DT),
Day(SALE_DT)
);
如果一天中的时间是您的SALE_DT
价值观的午夜,那应该可以工作。如果一天中的时间是其他时间,您也需要添加该部分。
UPDATE ORDERS_TEMP
SET SALE_DT =
DateSerial(
Year(LAST_ORDER_DT),
Month(SALE_DT),
Day(SALE_DT)
)
+ TimeValue(SALE_DT);
如果SALE_DT
并且LAST_ORDER_DT
可以包含 Null,则应从UPDATE
查询中排除这些行:
WHERE SALE_DT Is Not Null AND LAST_ORDER_DT Is Not Null