永发信息网

sqlserver时间戳列转换

答案:2  悬赏:20  手机版
解决时间 2021-02-14 03:05
  • 提问者网友:欲望失宠
  • 2021-02-13 13:11
现在一个table1中一列date时间戳
用sqlserver把这列date转换成年月日
看到函数dateadd()
ALTER TABLE table1 ADD datenew AS DATEADD(S,date,'1970-01-01 00:00:00')
select DATEADD(S,date,'1970-01-01 00:00:00') from table1
以上都不行,请问该怎么写更新代码?
最佳答案
  • 五星知识达人网友:春色三分
  • 2021-02-13 14:05
dateadd,是对日期进行加减操作,不是改变数据类型

CONVERT(varchar(16), getdate(), 20) 结果:2017-02-17 17:20
CONVERT(varchar(10), getdate(), 23) 结果:2017-02-01

使用convert函数进行转换格式,第三个参数不同,格式就不同,你可以百度下看看哪些参数对应哪些格式
全部回答
  • 1楼网友:山有枢
  • 2021-02-13 14:12
sql server timestamp 数据类型与时间和日期无关。sql server timestamp 是二进制数字,它表明数据库中数据修改发生的相对顺序。实现 timestamp 数据类型最初是为了支持 sql server 恢复算法。每次修改页时,都会使用当前的 @@dbts 值对其做一次标记,然后 @@dbts 加1。这样做足以帮助恢复过程确定页修改的相对次序,但是 timestamp 值与时间没有任何关系。 我用口水话解释一下便于理解: 我们知道数字类型有个“标识”属性,设置好“标识种子”、“标识递增量”,每增加一条记录时,这个字段的值就会在最近的一个标识值基础上自动增加,这样我们可以知道哪些记录是先添加的,哪些记录是后添加的,但是我们无法知道哪些记录修改过。timestamp这个类型的字段呢,每增加一条记录时,它会在最近的一个时间戳基础上自动增加,当修改某条记录时,它也会在最近的一个时间戳基础上自动增加,所以我们就知道哪些记录修改过了。 timestamp 这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp 一般用作给表行加版本戳的机制。存储大小为 8 字节。 注释 transact-sql timestamp 数据类型与在 sql-92 标准中定义的 timestamp 数据类型不同。sql-92 timestamp 数据类型等价于 transact-sql datetime 数据类型。 microsoft® sql server™ 将来的版本可能会修改 transact-sql timestamp 数据类型的行为,使它与在标准中定义的行为一致。到那时,当前的 timestamp 数据类型将用 rowversion 数据类型替换。 microsoft® sql server™ 2000 引入了 timestamp 数据类型的 rowversion 同义词。在 ddl 语句中尽可能使用 rowversion 而不使用 timestamp。rowversion 受数据类型同义词行为的制约。有关更多信息,请参见数据类型同义词。 在 create table 或 alter table 语句中,不必为 timestamp 数据类型提供列名: create table exampletable (prikey int primary key, timestamp)如果没有提供列名,sql server 将生成 timestamp 的列名。rowversion 数据类型同义词不具有这样的行为。指定 rowversion 时必须提供列名。 一个表只能有一个 timestamp 列。每次插入或更新包含 timestamp 列的行时,timestamp 列中的值均会更新。这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改 timestamp 值,从而更改键值。如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。如果该列属于索引键,则对数据行的所有更新还将导致索引更新。 不可为空的 timestamp 列在语义上等价于 binary(8) 列。可为空的 timestamp 列在语义上等价于 varbinary(8) 列。 microsoft sql server 用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储 base date(即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参考日期。不允许早于 1753 年 1 月 1 日的 datetime 值。另外一个 4 字节存储以午夜后毫秒数所代表的每天的时间。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯