Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 删除两个日期之间的特定天数名称_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 删除两个日期之间的特定天数名称

Sql 删除两个日期之间的特定天数名称,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要从SQLServer中的两个日期(开始日期|结束日期)中按名称删除特定的日期,如示例所示 START DATE "12/12/2020" END DATE "30/12/2020" 在这两个日期中,我从整个星期的星期一中删除,并计算没有星期一的天数。这是您想要的吗 delete from t where date >= @startdate and date <= @enddate and datename(

我需要从SQLServer中的两个日期(开始日期|结束日期)中按名称删除特定的日期,如示例所示

START DATE "12/12/2020" END DATE "30/12/2020"
在这两个日期中,我从整个星期的星期一中删除,并计算没有星期一的天数。

这是您想要的吗

delete from t
    where date >= @startdate and date <= @enddate and
          datename(weekday, date) = 'Monday';
从t中删除

其中date>=@startdate和date您可以使用函数
datename()
获取当天的名称:

declare @startdate date = '2020-12-12'
declare @enddate date = '2020-12-30'

select count(*)
from tablename
where datecolumn between @startdate and @enddate
and datename(w, datecolumn) <> 'Monday';
declare@startdate date='2020-12-12'
声明@enddate日期='2020-12-30'
选择计数(*)
从表名
其中datecolumn介于@startdate和@enddate之间
和datename(w,datecolumn)‘星期一’;

样本数据和期望的结果将阐明您想要做什么。您不需要对我们大喊大叫(!!),您正常的内部声音很好;我们可以很好地理解你,但不需要大写。请阅读一些关于改进你的问题的提示。提示:
(@@DateFirst+DatePart(weekday,SampleDate)-1)%7+1
将始终返回一个从
1
7
的整数,其中
1
对应于星期天,而不管
DateFirst
Language
的设置如何。这个问题看起来可疑地类似于。学生们似乎在寻找同一个家庭作业的帮助。正如其他人所说,在将来写一个好问题时,请确保你有样本数据、预期结果和你的尝试。并确保您的样本数据涵盖了您希望包含在解决方案中的所有边缘情况。我认为您指的是工作日,甚至是DW而不是dow。@johncapelletti。我不认为我第一次写对了
dow
看起来就像是日期部分的名称。在我的小脑袋里也是如此。非常感谢您,但我不明白这一行“其中,介于“startdate”和“enddate”之间的datecolumn”正是我的code
datecolumn
中的datecolumn是表中包含日期的列。必须使用列的实际名称对其进行更改。在WHERE子句中,条件是日期必须介于所需的开始日期和结束日期之间。