时间戳timestamp

原创 2013年12月02日 22:19:26

时间戳

数据库中自动生成的 唯一的 二进制的数据,通常用作给数据表的行添加版本戳的机制。

  • timestamp与时间和日期无关。
  • timestamp存储大小为8字节。
  • 一个数据表只能有一个timestamp列。
  • 每次修改或者插入包含timestamp列的行时,就会在timestamp列中插入增量数据库时间戳值。
  • timestamp列不适合于作为键使用,因为任何更新都会更改timestamp的值。

时间戳的作用及应用

  • 可以防止丢失更新

             多用户同时修改一行数据,最后提交修改的数据会覆盖前面提交的数据,造成前面的更新丢失。

  • 可以应用于数据增量更新

            若将一个表中更新的数据Copy到另外一个表,就可以根据时间戳确认哪些数据是更新过的数据。

 

实例

新建一个含有时间戳列的表tb_Class

 

插入若干条数据,并执行SQL查询:

select * from tb_Class;

 

执行下面的SQL查询:

select ts from tb_Class where  classid=1
update tb_Class set teacher='ly' where classid=1
select ts from tb_Class where  classid=1

从结果可以看出:更新行数据前后的时间戳的值发生改变。

 

防止更新丢失的实例(来自于网络)

declare table tmp(a varchar(10),b rowsversion) 
insert into tmp(a) values( 'abc') 

事务A: 

declare @rv rowversion 
select @rv=b from tmp where a='abc' 
waitfor delay '00:00:05' 
update tmp set a='xyz' where b=@rv 
事务B: 

update tmp set a='aaa' where b=@rv 

事务A在执行完毕后会发现并没有将'aaa'给抹去,这样就防止了丢失更新的现象。 

 

补充

推荐使用 timestamp 语法。 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。推荐使用rowversion。微软MSDN

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间戳转换成日期时间的步骤和示例代码

        因工作需要,经常跟时间戳打交道,但是因为它仅仅是一个数字,我们很难直接看出它有什么意义,或两个时间戳之间究竟差了多长的间隔。于是从MSDN for Visual Studio6上找到了...
  • sillyboard
  • sillyboard
  • 2006年04月06日 12:37
  • 4791

时间戳分析

好了,再说说RTP的时间戳吧。     首先,了解几个基本概念:     时间戳单位:时间戳计算的单位不是秒之类的单位,而是由采样频率所代替的单位,这样做的目的就是为了是时间戳单位更为...
  • qinjinghua2012
  • qinjinghua2012
  • 2015年04月24日 10:12
  • 1026

C# 如何生成一个时间戳

///    /// 获取时间戳  ///   ///   public static string GetTimeStamp()  {      TimeSpan ts = DateTime....
  • cdefg198
  • cdefg198
  • 2012年03月19日 16:34
  • 17780

C#时间格式转换为时间戳(互转)

时间戳定义为从格林威治时间 1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。  /// /// 时间戳Timestamp /// //...
  • fengqingtao2008
  • fengqingtao2008
  • 2015年04月25日 17:27
  • 18020

c# datetime与 timeStamp 互相转换

2014/1/14 13:01:26时间转完后为:1389675686数字 using System; using System.Collections.Generic; using System....
  • caikundashu
  • caikundashu
  • 2014年01月14日 13:53
  • 35469

c# datetime与 timeStamp(unix时间戳) 互相转换

/// /// Unix时间戳转为C#格式时间 /// /// Unix时间戳格式,例如1482115779 ///...
  • smartsmile2012
  • smartsmile2012
  • 2016年12月19日 10:54
  • 1500

使用C#对Unix的timestamp进行转换

    在众多的PHP+MySQL的应用之中,存储在MySQL中的时间都是一串数字,后经查这个格式的日期叫做:Unix Timestamp;Unix的timestamp是一组数字,表示从1970年1月...
  • hedongyang
  • hedongyang
  • 2007年05月17日 22:57
  • 3988

C# 13位时间戳

#region 时间戳         public static string GetTimeStamp()         {             System.DateTime...
  • MeGoodtoo
  • MeGoodtoo
  • 2017年04月15日 10:39
  • 1205

C#生成时间戳

///         /// 获取时间戳         ///         ///         public static string GetTimeStamp()   ...
  • Denghejing
  • Denghejing
  • 2016年08月08日 17:37
  • 1720

C# 时间与时间戳互转 13位

///           /// 将c# DateTime时间格式转换为Unix时间戳格式           ///           /// 时间           /// lo...
  • u010678947
  • u010678947
  • 2014年07月30日 15:41
  • 3947
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:时间戳timestamp
举报原因:
原因补充:

(最多只允许输入30个字)