1

我有两个日期/时间列可供访问LAST_ORDER_DTSALE_DT 我想将所有销售dates(SALE_DT)的年份更新为LAST_ORDER_DT

我尝试了以下语句,它抛出了语法错误。

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

请帮忙。

4

1 回答 1

1

据我了解您的问题,您可能有 a SALE_DTof#2011-09-30#和 a LAST_ORDER_DTof #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
于 2012-10-11T00:35:53.770 回答