Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql中获得两个日期之间的计数(第5天和第20天)_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

如何在sql中获得两个日期之间的计数(第5天和第20天)

如何在sql中获得两个日期之间的计数(第5天和第20天),sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,如何在sql中获得两个日期之间的第5天和第20天的计数 例如,如果起始日期为2013年5月5日,截止日期为2013年7月20日 结果是:5只需尝试: SELECT COUNT(*) FROM your_table WHERE DATEPART('d', date_column) IN (5, 20) AND date_column BETWEEN '01/01/2013' and '30/12/2013' 其中2013年1月1日和2013年12月30日是您的范围。包括您正在使用的R

如何在sql中获得两个日期之间的第5天和第20天的计数

例如,如果起始日期为2013年5月5日,截止日期为2013年7月20日

结果是:5

只需尝试:

SELECT COUNT(*)
  FROM your_table
 WHERE DATEPART('d', date_column) IN (5, 20)
   AND date_column BETWEEN '01/01/2013' and '30/12/2013'

其中2013年1月1日和2013年12月30日是您的范围。

包括您正在使用的RDM的标签。请提供一些示例!我想问题是:在日历上,5号和20号在给定的日期之间多久出现一次。不在表中。不在表中,需要从Calender获得它。我已经包括从和到目前为止,所以,计数是6而不是5。请相应地更改您的条件。请添加一些解释。在这里,我使用了常用的表表达式。您可以通过Sql server中的搜索词CTS在google中找到更多关于公共表表达式的信息。使用CTS,您不必制作桌子。Sql server自动在内存中创建表结构,您可以在定义后使用此表一次,但之后它将自动从内存中分发,您将无法访问。此外,从2005年起,我们有一个更好的工具,即Sql server中的递归。您可以使用CTS+Union all在sql server中进行递归。请搜索它,如果你有任何疑问,你可以写,我一定会帮助你。
Declare @dtfrom  as Datetime, @dtTo as Datetime

select @dtFrom = cast('5/5/2013' as datetime), @dtTo = cast('07/20/2013' as datetime)

;with dates(selectedDate,selectedday) as(
select @dtfrom,Day(@dtfrom)
 union All
select DateAdd(day,1,selectedDate), day(DateAdd(day,1,selectedDate)) from dates  where selectedDate < @dtTo
)

select Count(*) from dates  where selectedday in(5,20)