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 = 0
和 1 * 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
使用s
或ss
代替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
我在执行以下语句时得到 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 = 0
和 1 * 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
使用s
或ss
代替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