SQL 服务器 DATEDIFF 一直忽略日期的秒部分

SQL Server DATEDIFF keeps ignoring seconds part of date

我在执行以下语句时得到 0

SELECT DATEDIFF(mi,'1970-01-01 00:00:00','1970-01-01 00:00:01') * CONVERT(BIGINT,60)*1000  as BidTicks    

而我在执行此命令时得到 6000

SELECT DATEDIFF(mi,'1970-01-01 00:00:00','1970-01-01 00:01:01') * CONVERT(BIGINT,60)*1000  as BidTicks    

我有哪些选择?

要return将秒差作为查询中的第一个参数,您需要使用秒作为参数,即 s:

select DATEDIFF(s,'1970-01-01 00:00:00','1970-01-01 00:01:01')

基本上,您的查询是询问两者之间的分钟数。您的第一个查询 returns 0,第二个 returns 1.

因此 0 * 60 * 1000 = 01 * 60 * 1000 = 60000

尝试以下操作:

select DATEDIFF(s,'1970-01-01 00:00:00','1970-01-01 00:01:01') 
-- * convert(BIGINT,60) wasn't sure if this was necessary still
* 1000  as BidTicks   

使用sss代替mi

select DATEDIFF(s,'1970-01-01 00:00:00','1970-01-01 00:00:01') * CONVERT(BIGINT,60)*1000  as BidTicks 

datepart    | Abbreviations  
------------+---------------
hour        | hh 
minute      | mi, n 
second      | ss, s 
millisecond | ms 
microsecond | mcs
nanosecond  | ns 

您需要使用 s 或 ss 作为您的预期输出。

select DATEDIFF(s,'1970-01-01 00:00:00','1970-01-01 00:00:01') * CONVERT(BIGINT,60)*1000  as BidTicks 

它将产生:

60000