如何使MS SQL Server返回日期时间字段中存储的毫秒数?

时间:2013-11-14 14:48:33

标签: sql sql-server

我的数据库中有一个datetime字段,我需要获得自纪元以来的毫秒数。我可以在客户端应用程序上计算,但我的问题是,是否有办法从SQL服务器获取它。

我试过了:

select cast(dateField as bigint) from table where id = 0

...但我得到一个5位数的数字,这可能不是我想要的。

那可能吗?

4 个答案:

答案 0 :(得分:1)

尝试这样的事情(系统日期 - 修改以将日期放在那里):

SELECT cast(DATEDIFF(s, '19700101', GETDATE()) as bigint) * 1000

答案 1 :(得分:0)

尝试

选择DATEPART(ms,datefield)FROM表,其中id = 0

http://msdn.microsoft.com/en-us/library/ms174420.aspx

答案 2 :(得分:0)

  

我试过...施放(datefield as bigint)...但我得到一个五位数字

Sql Server将日期时间存储为8字节的浮点值,其中整数部分是整天的数,小数部分是小数天。转换为任何整数类型将为您提供数天,而不是毫秒。

  

我需要获得自纪元以来的毫秒数

你的时代是什么? Sql Server使用1/1/1900(它将存储此前日期的负值),但许多人期望在1970年1月1日。

考虑到所有这些,您需要以下其中一项:

DATEDIFF(millisecond, '19700101', datefield)
DATEDIFF(millisecond, 0, datefield)

答案 3 :(得分:0)

select CONVERT (varchar(20), tdate,113) from tblTrainingMaster 

而不是

 select CONVERT (varchar(20), tdate,120) from tblTrainingMaster