时间戳,也叫做Unix时间戳,就是从1970年1月1日0时0分0秒到当前时间的总秒数。
ruby中时间戳的使用
在ruby中通过to_i方法来获取这个值。
- irb(main):030:0> Time.now.to_i
- => 1355205144
如果需要把时间戳转换为具体的时间,通过Time.at方法来转换。
- irb(main):031:0> Time.at(Time.now.to_i)
- => 2012-12-11 13:52:40 +0800
C#中时间戳的使用
在C#中没有时间戳的概念,没有直接获取时间戳的类库,不过根据定义我们可以自己写一个方法。
获取时间戳
- private double getTimestamps()
- {
- return (DateTime.Now - new DateTime(1970, 1, 1)).TotalSeconds;
- }
由时间戳转换为时间
- private DateTime getDateTime(double timestamps)
- {
- return new DateTime(1970, 1, 1).AddSeconds(timestamps);
- }
在SQL Server中使用时间戳
在SQL Server也没有直接获取时间戳的方法,我们还是可以根据定义来写。
获取时间戳
- SELECT DATEDIFF(s,'1970-01-01 08:00:00',GETDATE()) AS TimeStamps
从时间戳转换为时间
- DECLARE @Time NVARCHAR(15)
- SET @Time='1355206394'
- SELECT DATEADD(s,convert(int,@Time),'1970-01-01 08:00:00') as DTime
在SQL Server中还有一个容易和“时间戳”搞混的概念。
在SQL Server中,有一种列的类型叫做TIMESTAMP,这个TIMESTAMP翻译成中文也叫做“时间戳”。但是这个TIMESTAMP不是前面介绍的时间戳,不是从1970年1月1日0时0分0秒到当前时间的总秒数。
这个TIMESTAMP和时间没有任何的关系,它是一个二进制的数值,一张表只能有一个TIMESTAMP列,TIMESTAMP列不需要手动插入和更新。
在增加一行数据的时候,TIMESTAMP列就会自动添加,更新这行数据的时候,TIMESTAMP列会自动被更新成新值。
如果你使用select语句查询的话,TIMESTAMP列会显示为0x0000000000031511。
这个TIMESTAMP在SQL Server的表中是一个行版本的概念,可以用来做乐观并发控制。如果数据在获取到修改的中间有其他用户进行了修改,TIMESTAMP列就会自动发生变化,再次修改的时候就可以把TIMESTAMP作为匹配条件,来阻止修改,或者做其他的提示。
如果我们的某些信息需要版本的概念,同时只需要知道版本发生变化,而且不显示版本号,可以使用TIMESTAMP列,就不用自己设计编号来维护了。
参考文献
1.百度百科-时间戳
转载于:https://blog.51cto.com/virusswb/1085640