sql - 计算周名称的数量
问题描述
我试图编辑,但我不知道周数:
declare @from datetime= '2019-06-01' declare @to datetime = '2019-06-19'
select datediff(day, -3, @to)/7-datediff(day, -2, @from)/7 AS FRI
查询工作得很好,但只是星期五,我也想编辑查询来计算:
Sunday
Monday
Tuesday
Wednesday
Thursday
Saturday
解决方案
不知道你想要什么。它是两个日期之间的日期名称列表吗?
declare @from datetime= '2019-06-01' declare @to datetime = '2019-06-19'
;WITH Tally (n) AS
(
-- 1000 rows
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) a(n)
CROSS JOIN (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) b(n)
CROSS JOIN (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) c(n)
)
SELECT [DayName]= datename(weekday, @from), [Date]=@from
union all
select datename(weekday, dateadd(day, n, @from)), dateadd(day, n, @from)
FROM Tally
where n <= DATEDIFF(day, @from, @to)
输出
DayName Date
Saturday 2019-06-01 00:00:00.000
Sunday 2019-06-02 00:00:00.000
Monday 2019-06-03 00:00:00.000
Tuesday 2019-06-04 00:00:00.000
Wednesday 2019-06-05 00:00:00.000
Thursday 2019-06-06 00:00:00.000
Friday 2019-06-07 00:00:00.000
Saturday 2019-06-08 00:00:00.000
Sunday 2019-06-09 00:00:00.000
Monday 2019-06-10 00:00:00.000
Tuesday 2019-06-11 00:00:00.000
Wednesday 2019-06-12 00:00:00.000
Thursday 2019-06-13 00:00:00.000
Friday 2019-06-14 00:00:00.000
Saturday 2019-06-15 00:00:00.000
Sunday 2019-06-16 00:00:00.000
Monday 2019-06-17 00:00:00.000
Tuesday 2019-06-18 00:00:00.000
Wednesday 2019-06-19 00:00:00.000
推荐阅读
- typescript - TypeScript Compiler API 中 Symbol 和 Node 的区别
- epplus - 使用 EPPlus 在 ubuntu 18.04 上读取 excel 文件时出错
- ios - iOS Fabric 每日新增用户最近几乎为 0
- api - 如何在 Google Maps Web API 上设置集群
- mysql - SQL 查询 from 和 to 之间的预订日期
- aws-amplify - 连接失败:缓冲区未定义 - 更新到 v4.7.0 后订阅 AWS Amplify (graphql) 订阅时出错
- reactjs - 在 React,js 中遍历 HTMLcollection
- laravel - 在运行时更改包的视图路径
- java - Android仅调用另一个类中的方法的最佳方法
- pandas - 重新索引多索引数据框