【发布时间】:2019-10-02 14:53:10
【问题描述】:
我在尝试理解 DATEDIFF 应该如何工作时遇到了一些麻烦。在某些情况下,我看到了一个 int 参数,而不是像下面的示例这样的有效日期:
/* Output is 119 */
SELECT DATEDIFF(year, 6, '2019/05/15');
/* Output is 6.227 */
SELECT DATEDIFF(week, 6, '2019/05/15');
在这种情况下,如何处理 6 号?什么意思?
谢谢!
【问题讨论】:
-
隐式转换为
datetime -
我敢说如果有人在使用它,他们根本就没有正确使用它。文档明确指出第二个参数是 startdate 并将所有日期类型列为有效参数。没有一个是 int。
-
这种不幸的隐式转换是人们应该使用
datetime2而不是datetime的原因 -
我更关心使用该日期格式,而不是不受语言设置影响的日期格式。对于我们中的一些人来说,使用整数和直接数学是旧日期类型的一大优势。
标签: sql sql-server datediff dateadd