【sqlserver】比较sqlserver中 timestamp 类型的大小

工作中遇到一个问题,在 sqlserver 表中根据 timestamp 字段值的大小进行一个增量的读取。这个数据格式比较特别,所以花了一段时间研究了一下。

timestamp 是什么

原来我看名字以为是一个时间戳,是一个 long 型,但是看了 Stack Overflow 上有关的问题,其实这个是一个版本号(version_no),是数据库自己维护的,当这条数据有变化的时候(包括新增和修改)都会自动修改增大这个值。这个值的数据格式是:
0x0000000000A42E40
这个样子的十六进制。

这个字段的读取出来是一个字符串,并且会丢失最前面的 0x 两个字符,所以要用的话需要手动补全。用sql比较的时候可以直接比较大小:
0x0000000000A42E40 > 0x0000000000A42773
这个样子

mybatis怎么判断大小来查询

xml的sql中,传入的参数应该是一个String类型的参数,同时要用 $ 来处理参数。

select 
  *
from 
  table_a
where 
  timestamp > ${time}

猜你喜欢

转载自blog.csdn.net/coldfireman/article/details/80423889