我想将包含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,Level 16,State 1,Line 1
更新或插入视图或功能' cts'失败,因为它包含派生或常量字段。
答案 0 :(得分:0)
错误消息非常明确:问题在于您尝试将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