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。
我的数据库中有以下两列:
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。