没有得到完美答案的约会

dee*_*pak 1 sql sql-server sql-server-2008

Datediff非常混淆两天之间的差异:

DATEDIFF(DAY, '2014-09-01','2014-09-07')+1) AS totaldays
Run Code Online (Sandbox Code Playgroud)

当我写上面然后它会给我7天它是完美的....

但是当我写下面的时候

DATEDIFF(DAY, '2014-09-01','2014-09-02')+1) AS totaldays
Run Code Online (Sandbox Code Playgroud)

然后它会给我2天但我想1 day用这个下面的功能

 DATEDIFF(DAY, '2014-09-01','2014-09-02')+1) AS totaldays
Run Code Online (Sandbox Code Playgroud)

我怎么才能得到它?

Dan*_*anK 5

DATEDIFF功能正在按预期工作.

DATEDIFF 只需通过第一个参数中指定的特定元素从第三个参数中减去第二个参数.

例如,以下查询提供了四列...所有从第三个中指定的日期减去第二个参数中指定的日期:

Select DATEDIFF(DAY, '2014-09-01','2014-09-07')+1,  -- Calculation: (7-1)+1  = 7
       DATEDIFF(DAY, '2014-09-01','2014-09-07'),    -- Calculation: (7-1)    = 6
       DATEDIFF(DAY, '2014-09-01','2014-09-02')+1,  -- Calculation: (2-1)+1  = 2
       DATEDIFF(DAY, '2014-09-01','2014-09-02')     -- Calculation: (2-1)    = 1
Run Code Online (Sandbox Code Playgroud)

结果如预期:

Col1 | Col2 | Col3 | Col4
 7   |   6  |  2   |   1
Run Code Online (Sandbox Code Playgroud)

是此功能的MS文档.

如果您希望函数采取不同的行为,那么您将需要使用CASE语句.