SQL 计算列、合并、两个日期时间字段、索引

SQL Computed Column , Coallesce , Two DateTime Fields , Index

我的数据库中有以下两列:

Delivery_Date(日期时间) Delivery_Override(日期时间)

(我必须为我做的其他事情保留原始交货日期)

我创建了以下计算列

Delivery_Packdate 公式 : (coalesce(nullif([Delivery_Override],''),[Delivery_Date]))

现在我可以像这样 select :

select * from Deliveries where Delivery_PackDate = '2019-09-24' 

这会自动 select 填写覆盖日期,否则为原始日期。

问题是我想索引它,但是 SQL 不允许这样做,因为它是不确定的。

我想我在这里做错了什么,我该如何正确解决这个问题?有什么建议吗?

谢谢。

问题是您正在转换为字符串。以下工作正常:

create table t (
    Delivery_Override datetime,
    Delivery_Date datetime
);

alter table t add dt as (coalesce(Delivery_Override, Delivery_Date)) persisted;

create index idx_t_dt on t(dt);

Here 是一个 db<>fiddle.

不存在值为 '' 的 date/time。