zoukankan      html  css  js  c++  java
  • sql timestamp 的应用

    timestamp 通常用作给表行加版本戳的机制。

    timestamp 公开数据库中自动生成的唯一二进制数字的数据类型。

    存储大小为 8 个字节。 timestamp 数据类型只是递增的数字,不保留日期或时间。

    每个数据库都有一个计数器,当对数据库中包含 timestamp 列的表执行插入或更新操作时,该计数器值就会增加。

    该计数器是数据库时间戳。 这可以跟踪数据库内的相对时间,而不是时钟相关联的实际时间。

    一个表只能有一个 timestamp 列, 每次修改或插入包含 timestamp 列的行时,就会在 timestamp 列中插入增量数据库时间戳值。

    由于timestamp在SQL SERVER 2005数据库中,不可为空的timestamp类型在语义上等同于binary(8)类型,可为空的 timestamp类型在语义上等同于varbinary(8)类型,这将导致在C#程序中获取到的timestamp类型则变成了byte[]类型。所以如果我们需要从数据库中获取并使用这个时间戳的话就必需经过转换。

    在程序中我们发现,通过ADO.NET获取数据库中timestamp字段值到程序中,结果类型为byte[]。假设在数据库中timestamp的值为0x00000000000007D6,那么获取到.net程序中的值就不是这样了,一把来说会变成byte[]的数组类型。

    方法一(在SQL中转换):

    SELECT TS
    ,CAST(TS AS VARBINARY(8)) AS 'timestamp转十六进制字符串' 
    ,CONVERT(BIGINT,TS) AS 'timestamp转bigint类型'
    FROM tb_Ts

    方法二(在程序中转换,调用下面的方法即可):

            /// <summary>
            /// 将数据库中timespan转换成十六进制字符串
            /// </summary>
            /// <param name="objTs">从数据库中获取的timespan值</param>      
            /// <returns>timespan十六进制字符串</returns>
            public string ConvertToTimeSpanString(object objTs)
            {
                byte[] btTsArray = objTs as byte[];
                string strTimeSpan = "0x" + BitConverter.ToString(btTsArray).Replace("-", "");
                return strTimeSpan;
            }
            /// <summary>
            /// 将十六进制字符串转换成数据库中timespan
            /// </summary>
            /// <param name="TimeSpanString">十六进制字符串</param>
            /// <returns></returns>
            public byte[] ConvertTimeSpanStringToBytes(string TimeSpanString)
            {
                TimeSpanString = TimeSpanString.Substring(2, TimeSpanString.Length-2);
                byte[] returnBytes = new byte[TimeSpanString.Length / 2];
                for (int i = 0; i < returnBytes.Length; i++)
                {
                    returnBytes[i] = Convert.ToByte(TimeSpanString.Substring(i * 2, 2), 16);
                }
                return returnBytes;
            }
  • 相关阅读:
    C++ com 组件的使用
    年计算机硬件基础知识大全
    prism 的学习网站
    WPF
    C#录音从声卡
    C#实现放大镜
    HTML常用提交按钮
    HTML常用标签
    k8s 运行单实例 mysql
    aws eks ebs StorageClass PersistentVolume PersistentVolumeClaim
  • 原文地址:https://www.cnblogs.com/su-king/p/12567742.html
Copyright © 2011-2022 走看看