DATEDIFF不返回整数值T-SQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DATEDIFF不返回整数值T-SQL相关的知识,希望对你有一定的参考价值。

我试图看看在SQL Server 2012中将一些值插入表中花了多少时间。

这是我试图做的:

DECLARE @starttime DATETIME
DECLARE @timetook DATETIME

CREATE TABLE MyTable (id INT, name CHAR(10));

SET @starttime = SYSDATETIME()

INSERT INTO MyTable (id, name) 
VALUES (1, 'Bob'), (2, 'Peter'), (3, 'Joe'),
       (4, 'Boby'), (5, 'Peters'), (6, 'Joey'),
       (7, 'Bobs'), (8, 'Petery'), (9, 'Joes');

SET @timetook = DATEDIFF(ss, @starttime, SYSDATETIME())

SELECT @timetook

这将返回1900-01-01 00:00:00.000。根据datediff docs,它应该是00:00:00.000或整数值。因为我花了几秒钟,所以我应该在几秒钟内得到这个数字。 (对于此示例,它应为0但没有1900-01-01)

我在这里错过了什么?任何建议将不胜感激。

答案

将@timetook声明为datetime会给你一个datetimeresult。而datetime = 0特别是1900-01-01 00:00:00.000

declare @starttime datetime
declare @timetook int --Issue was this declaration as datetime

CREATE TABLE MyTable (id int, name char(10));

set @starttime = SYSDATETIME()

INSERT INTO MyTable (id, name) VALUES (1, 'Bob'), (2, 'Peter'), (3, 'Joe'),
                                      (4, 'Boby'), (5, 'Peters'), (6, 'Joey'),
                                      (7, 'Bobs'), (8, 'Petery'), (9, 'Joes');
set @timetook = DATEDIFF(ss, @starttime, SYSDATETIME())

select @timetook

通过将@timetook声明为int,您将得到您正在寻找的结果:0

以上是关于DATEDIFF不返回整数值T-SQL的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL DateDiff - 按“整小时前”进行分区,而不是“时间分钟变成 00 以来”

如何通过使用 T-SQL 将两个整数值相除来获得浮点结果?

第四十三章 SQL函数 DATEDIFF

T-SQL 计算两天之间的天数(datediff 不太有效)

DateDiff VBA的多个变量

SQL Server / T-SQL:CHOOSE是评估所有结果,还是只返回返回的结果?