带有 datetime2 字段的 HashBytes
HashBytes with datetime2 field
我正在多个列上使用散列字节创建散列键以获得我们现在在 where 子句中使用的性能增益。
alter table dbo.Table1
add HashKey AS CAST(hashbytes('MD5', PID+PNumber+CONVERT([varchar] (50),[DateStamp]) +CONVERT(VARCHAR(50), TransactionCount)+OCD+ONbr+TransactionID) AS VARBINARY(80)) PERSISTED
但是其中一列是我无法添加的 datetime2 字段。当我尝试时,我收到以下错误消息
"Computed column 'HashKey' in table 'table1' cannot be persisted because the column is non-deterministic.".
根据我的研究,我发现 datetime2 不能使用,因为它是不确定的。
但我无法更改格式,因为我需要准确比较包含所有毫秒的值。
任何人都可以给我解决方法吗?任何替代解决方案将不胜感激。
我不确定其中的含义..
但是将日期时间转换为二进制总是会在下面给出新的 value.see 示例..
select getdate(),cast(getdate()as binary)
2016-08-02 10:17:20.573 0x000000000000000000000000000000000000000000000000A65600A98EEC
2016-08-02 10:17:40.537 0x000000000000000000000000000000000000000000000000A65600A9A651
所以尝试像..
select hashbytes('md5',cast(getdate()as binary))
我正在多个列上使用散列字节创建散列键以获得我们现在在 where 子句中使用的性能增益。
alter table dbo.Table1
add HashKey AS CAST(hashbytes('MD5', PID+PNumber+CONVERT([varchar] (50),[DateStamp]) +CONVERT(VARCHAR(50), TransactionCount)+OCD+ONbr+TransactionID) AS VARBINARY(80)) PERSISTED
但是其中一列是我无法添加的 datetime2 字段。当我尝试时,我收到以下错误消息
"Computed column 'HashKey' in table 'table1' cannot be persisted because the column is non-deterministic.".
根据我的研究,我发现 datetime2 不能使用,因为它是不确定的。
但我无法更改格式,因为我需要准确比较包含所有毫秒的值。
任何人都可以给我解决方法吗?任何替代解决方案将不胜感激。
我不确定其中的含义..
但是将日期时间转换为二进制总是会在下面给出新的 value.see 示例..
select getdate(),cast(getdate()as binary)
2016-08-02 10:17:20.573 0x000000000000000000000000000000000000000000000000A65600A98EEC
2016-08-02 10:17:40.537 0x000000000000000000000000000000000000000000000000A65600A9A651
所以尝试像..
select hashbytes('md5',cast(getdate()as binary))