为什么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
谢谢,
艾登
答案 0 :(得分:1)
这可能有点难以梳理,但在文档的"Supported String Literal Formats for date"部分对此进行了解释。
这有五个部分(但最后两个部分是API特定的)。第一部分受到国际化设置的影响,并且有许多不同的格式。
第二种是ISO 8601格式。我认为连字符格式与第一个表格中的最后一种格式(“yyyy dd mm”没有连字符)冲突。
最后一节有一条信息性的“一个六位或八位数的字符串总是被解释为ymd”。因此,'YYYYMMDD'总是被正确解释。因此,这是日期/时间的明确格式。
注意:由于您使用的函数需要日期,如果整数有效,则使用其字符串表示将其转换为日期。通常,日期常量应为单引号。
答案 1 :(得分:0)
实际上它是sql server默认的日期格式,但您可以按照以下链接格式化日期: http://www.sql-server-helper.com/sql-server-2012/format-function-vs-convert-function.aspx