SQL服务器TIMESTAMP
数据类型有nothing与日期和时间有关!
它只是连续 8 字节整数的十六进制表示形式 - 它仅有助于确保行自读取以来没有发生更改。
您可以读取十六进制整数,或者如果您想要一个BIGINT
。举个例子:
SELECT CAST (0x0000000017E30D64 AS BIGINT)
结果是
400756068
在较新版本的 SQL Server 中,它被称为RowVersion
- 因为事实就是如此。请参阅有关 ROWVERSION 的 MSDN 文档 http://msdn.microsoft.com/en-us/library/ms182776.aspx:
是一种数据类型,公开数据库中自动生成的唯一二进制数。 rowversion 一般用作一种机制
对于版本标记表行。这
rowversion 数据类型是只是一个递增的数字,而不是
保留日期或时间。要记录日期或时间,请使用 datetime2
数据类型。
So you cannot转换 SQL ServerTIMESTAMP
到日期/时间 - 它只是不是日期/时间。
但如果你说的是时间戳,但实际上你的意思是DATETIME
列 - 那么您可以使用中描述的任何有效日期格式投射和转换 http://msdn.microsoft.com/en-us/library/ms187928.aspxMSDN 帮助中的主题。这些是由 SQL Server“开箱即用”定义和支持的。不支持任何其他内容,例如您必须进行大量手动转换和连接(不推荐)。
您正在寻找的格式看起来有点像ODBC 规范(样式 = 121):
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
gives:
2011-11-14 10:29:00.470
SQL Server 2012 终于有一个FORMAT功能 http://blog.sqlauthority.com/2011/09/17/sql-server-denali-string-function-format-a-quick-introduction/进行自定义格式设置......