DATEDIFF在yyyymmdd格式SQL服务器上工作

时间:2016-11-10 12:53:49

标签: sql sql-server

为什么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

谢谢,

艾登

2 个答案:

答案 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