我有一个包含两列的表,第一列是(当前日期)时间戳,另一列是(日期返回)日期时间列。我需要从天数中获取当前日期和日期返回之间的差异。这可能吗?
不,这是不可能的。
与流行的看法(以及名称本身)相反,timestamp
column 实际上与时间无关.
免责声明:这个答案特定于 Sql Server(根据问题的标签),其他数据库引擎可能有不同的实现。*
相反,它是一个稳定增加的 64 位数字。该数字的值在具有此类时间戳列的单个数据库中的所有表之间共享。换句话说,如果您有两个这样的表,修改一个表中的一行,并修改另一个表中的一行,则第一个表中的时间戳值为 X,第二个表中的时间戳值为 X+1。
根据时间戳的文档:
每个数据库都有一个计数器,对于在数据库中包含时间戳列的表上执行的每次插入或更新操作,该计数器都会递增。该计数器是数据库时间戳。这跟踪数据库内的相对时间,而不是与时钟关联的实际时间。
因此,该值与插入或上次修改行的实际日期和/或时间无关,并且不能以任何方式转换为此类日期/时间。
唯一的目的是timestamp
列就是要有一些独特的东西,而且保证会不断增加。由于该值是 64 位,因此您将可以访问18 446 744 073 709 551 616
需要一个操作timestamp
值重置之前的列。如果你有一个每秒可以处理一百万个这样的操作的数据库,你仍然需要等待大约 584 554 年才能重置该值,所以我认为它满足唯一性要求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)