为什么 DATEDIFF 接受 yyyymmdd 格式?不是只有 yyyy-mm-dd 格式吗?
当日期为 yyyymmdd 格式时,函数 DATEDIFF(datepart, start_date, end_date) 工作正常
DATEDIFF(DAY, 20161201, 20161231);
It gives answer 30
如果你做 DATEDIFF(DAY, 20161201, 20161231) + 1 -- 包括结束日期
It gives 31
谢谢,
艾登
最佳答案
这可能有点难以梳理,但文档中的 "Supported String Literal Formats for date" 部分对此进行了解释.
这有五个部分(但最后两个部分是特定于 API 的)。第一部分受国际化设置的影响,并且有很多不同的格式。
第二种是 ISO 8601 格式。我认为带连字符的格式与第一个表中的最后一个格式(不带连字符的“yyyy dd mm”)冲突。
最后一节有这样的信息行“六位或八位数字的字符串总是被解释为 ymd”。因此,“YYYYMMDD”总是被正确解释。因此,这是日期/时间的明确格式。
注意:因为您使用的函数需要日期,所以如果整数有效,则会使用其字符串表示形式将其转换为日期。通常,日期常量应该用单引号引起来。
关于sql - DATEDIFF 在 yyyymmdd 格式的 SQL 服务器上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40528143/