我有一个表(带有时间戳和varbinary)
CREATE TABLE [dbo].[CASE]
(
[CASE_ID] [int] IDENTITY(1,1) NOT NULL,
[CASE_TITLE] [varchar](50) NOT NULL,
[CASE_STATUS] [varchar](50) NOT NULL,
[MODIFIED_TS] [timestamp] NOT NULL,
[SYNCED_TS] [varbinary](8) NULL
)
然后我添加一个项目,并更新它......
UPDATE [CASE]
SET CASE_STATUS = 'Something New'
WHERE CASE_ID = 1
当我这样做时,我会更新Synced_TS
列:
UPDATE [CASE]
SET SYNCED_TS = MODIFIED_TS
WHERE CASE_ID = 1
然而,当我跑这个......
SELECT
*,
CAST(CONVERT(BIGINT, MODIFIED_TS) - CONVERT(INT, SYNCED_TS) AS DECIMAL)
FROM
[CASE]
WHERE
CAST(CONVERT(BIGINT, MODIFIED_TS) - CONVERT(INT, SYNCED_TS) AS DECIMAL) > 1
OR SYNCED_TS IS NULL
我有两个完全不同的值,例如A0D和A0A,它们是不同的,但不应该是A0D和A0C吗?
MODIFIED_TS SYNCED_TS
---------------------------------------
0x0000000000000A0D 0x0000000000000A0A
它出现问题的原因是我试图将其转换为整数来进行比较,因此我可以确定是否需要同步记录。