日期时间列不能保留

时间:2019-02-28 18:45:08

标签: sql sql-server

我有此SQL语句来创建一个表,该表存储JSON字符串数据和在该JSON字符串中找到的事件时间。

CREATE TABLE [dbo].[EventLog] 
(
    [EventID]           INT NOT NULL IDENTITY(1,1),
    [EventTime]         AS CAST(JSON_VALUE(RawEvent, '$.EventTime') AS DATETIME ) PERSISTED,
    [RawEvent]          NVARCHAR(MAX) NOT NULL
)

但是,当我运行此命令时,出现以下错误,我假设SQL Server不知道该值是否适合DATETIME?有没有办法定义此列?

  

4936消息,第16级,状态1,第26行   表'Event'中的计算列'EventTime'无法保留,因为该列不确定。

1 个答案:

答案 0 :(得分:3)

A,这在documentation中有解释:

  

CAST确定性的,除非与datetime,smalldatetime或sql_variant一起使用。

您也许可以使用datefromparts()datetimefromparts()来解析日期并重建值。