为什么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 Server上工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40528143/