【发布时间】:2018-04-11 11:13:09
【问题描述】:
我有开始日期、结束日期和日期名称。如何在sql中获取特定日期的这两个日期之间的所有日期?
示例数据:
- 开始日期:2018 年 4 月 11 日
- 结束日期:2018 年 5 月 11 日
- 日期:星期一、星期四
预期输出:周一和周四开始和结束日期之间的所有日期并将它们存储在表中
更新 我现在的代码(不工作)
; WITH CTE(dt)
AS
(
SELECT @P_FROM_DATE
UNION ALL
SELECT DATEADD(dw, 1, dt) FROM CTE
WHERE dt < @P_TO_DATE
)
INSERT INTO Table_name
(
ID
,DATE_TIME
,STATUS
,CREATED_DATE
,CREATED_BY
)
SELECT @P_ID
,(SELECT dt FROM CTE WHERE DATENAME(dw, dt) In ('tuesday','friday',null))
,'NOT SENT'
,CAST(GETDATE() AS DATE)
,@USER_ID
【问题讨论】:
-
你需要一个日历表,或者一个 cte 生产日历表。
-
您使用的是哪个DBMS? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标签
postgresql、oracle、sql-server、db2、... -
请edit您的问题并添加一些sample data 和基于该数据的预期输出。 Formatted text 请no screen shots。 (edit 您的问题 - 在 cmets 中不要邮政编码或其他信息)
-
我已经编辑了我的问题
-
也许这是一个很好的起点:sqlservercentral.com/articles/calendar/145206
标签: sql sql-server date