【问题标题】:Is there a way to count number of each days in sql有没有办法在sql中计算每天的天数
【发布时间】:2021-02-24 07:19:18
【问题描述】:
declare @date1 as date 2021-02-01
declare @date1 as date 2021-02-20

在这里,我想获取给定日期之间每天发生的天数。结果应该显示每天发生的天数

Monday 3
Tuesday 3
Wednesday 3
Thursday 3
Friday 3
Saturday 3
Sunday 2

【问题讨论】:

  • 你试过什么?你在哪里卡住了?向我们展示你的尝试。
  • 什么都没试过,具体代码我不知道怎么写
  • 那么你需要做一些研究......所以不是免费的代码编写服务。要成为一名优秀的开发人员,您需要培养至少开始解决这类问题的技能。如果别人这样做,您将不会从中学习。首先分解一下,你有两个问题,1)获取开始和结束之间所有日期的列表 - 这很常见并且已经解决了很多次。然后 2) 计算不同的日期,这对于使用文档中显示的几个与日期相关的函数来说是微不足道的。
  • 嗨,Dale,我自己试过了,我用下面的代码得到了解决方案,我认为它很天真,但它有效,你能不能给它一个战利品

标签: sql-server date


【解决方案1】:

我是这样试的

declare @date1 as date = '2021-02-01'
declare @date2 as date= '2021-02-23'
drop table #days
create table #days
(
daynames varchar(50)
)

while (@date1<=@date2)
begin
insert into #days
values(datename(dw,@date1));
set @date1=dateadd(d,1,@date1)
end
select tb1.daynames,max(tb1.count) as 'visit count' from  (select  
daynames,ROW_NUMBER() over(partition by daynames order by daynames) as count
from #days) as tb1
group by tb1.daynames

【讨论】:

【解决方案2】:

试试这个,

DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = '1/1/2021'
SET @EndDate = '1/31/2021'

select 
    datediff(dd, -7, @EndDate)/7-datediff(dd, -6, @StartDate)/7 AS MON,
    datediff(dd, -6, @EndDate)/7-datediff(dd, -5, @StartDate)/7 AS TUE,
    datediff(dd, -5, @EndDate)/7-datediff(dd, -4, @StartDate)/7 AS WED,
    datediff(dd, -4, @EndDate)/7-datediff(dd, -3, @StartDate)/7 AS THU,
    datediff(dd, -3, @EndDate)/7-datediff(dd, -2, @StartDate)/7 AS FRI,
    datediff(dd, -2, @EndDate)/7-datediff(dd, -1, @StartDate)/7 AS SAT,
    datediff(dd, -1, @EndDate)/7-datediff(dd, 0, @StartDate)/7   AS SUN

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多