将日期转换为新字段(日期时间)



我想从包含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

最新更新