【发布时间】:2019-04-11 07:49:35
【问题描述】:
我试图修改旧查询并遇到此代码块
select DATEADD(MONTH, DATEDIFF(MONTH, -1,getdate() )-1, 1)
但在我看来,dateadd 和 datediff 函数需要一些日期参数来进行计算。但是这里 DateDiff 和 DateAdd 在 Date 参数的地方有一些整数值
例如 DATEDIFF(MONTH, -1,getdate() )-1 返回 1431,它只是一个十进制值,但根据文档的代码块会查找 Date 参数。
https://www.w3schools.com/sql/func_sqlserver_datediff.asp
在 DateAdd 的情况下也是如此
请大家解释一下
【问题讨论】:
-
请注意,W3School 页面通常是inaccurate。始终参考official documentation
-
我绝不会推荐那个网站。
-
w3school是w3school- 一个带有入门级 HTML 和 Javascript 教程的站点,其中包含一些 SQL 数据库。它不是 SQL Server 的文档。它也不是 Mozilla 的 MDN——不要指望它在 Fetch 或 File API 上有比 MDN 更好的文档。这可能是了解函数 存在 的好方法,但实际的文档要好得多,而且通常更容易使用。甚至 google 在W3School之前返回 doc 站点 -
W3School 上的这个手册页是错误的:"返回两个日期值之间的差,以年为单位:" 这是错误的。这将返回一个 int,它是 2 个日期之间的差异,但格式由第一个参数定义。
DATEDIFF(MONTH, ...)返回月数,而不是年数。
标签: sql-server tsql datediff