我有此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'无法保留,因为该列不确定。
答案 0 :(得分:3)
A,这在documentation中有解释:
CAST确定性的,除非与datetime,smalldatetime或sql_variant一起使用。
您也许可以使用datefromparts()
或datetimefromparts()
来解析日期并重建值。