我想从包含YYYYDD
的字符串转换为类型为 Datetime
的新列。当前日期只有YYYYDD
示例200908
。我想更改为YYYYMMDD
,例如20090829
我的代码:
with cts as
(
select TRY_CONVERT(datetime,CRSE_EDTE,112) dte,
[new_CRSE_EDTE]+'28' newdte
from [SMBM_DBPELJ].[DBPELJ].[MSTUMASTER]
)
update cts
set newdte = dte
错误:
Msg 4406,级别 16,状态 1,第 1
行 更新或插入视图或函数"cts"失败,因为它包含派生字段或常量字段。
错误消息非常明确:问题是您正在尝试将 CTE 中定义的newdte
字段更新为以下表达式:[new_CRSE_EDTE]+'28'
。显然,没有办法更新这样的表达。
您必须修改 CTE 以包含要更新的基表中的字段,并在UPDATE
查询中更新该字段。
也许你想做的是这样的:
with cts as
(
select TRY_CONVERT(datetime,CRSE_EDTE,112) dte,
[new_CRSE_EDTE] newdte
from [SMBM_DBPELJ].[DBPELJ].[MSTUMASTER]
)
update cts
set newdte = dte + '28'
或
with cts as
(
select TRY_CONVERT(datetime,CRSE_EDTE,112) + '28' dte,
[new_CRSE_EDTE] newdte
from [SMBM_DBPELJ].[DBPELJ].[MSTUMASTER]
)
update cts
set newdte = dte