我想知道如果有一种方法来检索SQL Server的所有日期的列表。我知道使用getdate()函数将检索当前的日期和时间。有没有函数可以返回所有日期的列表?检索日期的SQL Server
回答
不是来自内置功能,没有,但你可以创建自己的function
做这个。
您可以通过下面的生成日期的列表:
Declare @FromDate Date = '2014-04-21',
@ToDate Date = '2014-05-02'
;With Date (Date) As
(
Select @FromDate Union All
Select DateAdd(Day, 1, Date)
From Date
Where Date < @ToDate
)
Select Date
From Date
Option (MaxRecursion 0)
使用这个逻辑,你可以创建自己的function
做相同的:
Create Function udf_GenerateDateRange(@From Date, @To Date)
Returns @Date Table
(
Date Date
)
As Begin
;With Date (Date) As
(
Select @From Union All
Select DateAdd(Day, 1, Date)
From Date
Where Date < @To
)
Insert @Date
Select Date
From Date
Option (MaxRecursion 0)
Return
End
使用function
可以选择一切在日期范围内通过:
Select * From udf_GenerateDateRange('2014-01-01', '2014-05-10')
我d不知道“所有日期”是什么意思,但是您应该能够传入开始日期和结束日期,并且它会返回所有日期之间的所有内容。
我不能投票,因为我不知道OP要求什么 –
我正在阅读他的问题,因为“我如何生成日期列表?” – Siyual
非常感谢您的回答。这正是我一直在寻找的 - 即使我有困难discribing我想要的东西,哈哈 – user3109653
此功能将让你从开始日期列表以指定频率才能完成。
IF OBJECT_ID('ListDates') IS NOT NULL DROP FUNCTION ListDates
GO
CREATE FUNCTION [dbo].[ListDates]
/*
returns a list of intervals with the given frequency that start after @StartDate and
before @EndDate.
*/
(
@Frequency int,
@StartDate DateTime,
@EndDate DateTime)
/*
@Frequency:
0 - day,
1 - week,
2 - month
3 - 3 months
4 - 6 months
5 - year
*/
returns @List TABLE (StartRange Date, EndRange Date)
BEGIN
with dates as (
SELECT cast(@StartDate as Date) [date]
UNION ALL
SELECT
CASE @Frequency
WHEN 0 THEN DATEADD(day,1,t.date)
WHEN 1 THEN DATEADD(week,1,t.date)
WHEN 2 THEN DATEADD(month,1,t.date)
WHEN 3 THEN DATEADD(month,3,t.date)
WHEN 4 THEN DATEADD(month,6,t.date)
WHEN 5 THEN DATEADD(year,1,t.date)
END
FROM dates t
WHERE t.[date] < @EndDate
)
insert into @List (StartRange, EndRange)
select
[Date],
CASE @Frequency
WHEN 0 THEN DATEADD(day,1,[Date])
WHEN 1 THEN DATEADD(week,1,[Date])
WHEN 2 THEN DATEADD(month,1,[Date])
WHEN 3 THEN DATEADD(month,3,[Date])
WHEN 4 THEN DATEADD(month,6,[Date])
WHEN 5 THEN DATEADD(year,1,[Date])
END
from dates
WHERE [Date] < @EndDate
OPTION (MAXRECURSION 10000)
RETURN
END
GO
- 1. SQL Server 2008搜索日期
- 2. 检索SQL Server中记录的日期时间的时区(2005)
- 3. 我如何检索SQL Server中特定日期的行?
- 4. 从DD-MM-YYYY中的SQL Server检索日期
- 5. 按日期在SQL Server中搜索
- 6. 在SQL Server中搜索可用日期
- 7. 在SQL Server 2012中按日期搜索
- 8. SQL Server搜索日期范围
- 9. 使用SQL Server检查日期间隔
- 10. 检查日期使用SQL Server
- 11. SQL Server根据日期检索经常性约会
- 12. 检索日期在SQL Server中,CURRENT_TIMESTAMP VS GETDATE()
- 13. 转换的SQL Server日期AS400日期
- 14. SQL Server将日期
- 15. 检索日期
- 16. 检索日期
- 17. 检索在SQL Server
- 18. SQL Server的日期选择
- 19. SQL Server的最后日期
- 20. SQL Server的日期格式
- 21. Sql Server的转换日期
- 22. 的SQL Server日期递归
- 23. SQL Server的日期约束
- 24. 如何只能从SQL Server中的XML列中检索日期大于今日日期的行?
- 25. 检索的DatePicker values.Current日期检索
- 26. 检索日期fullCalenadar
- 27. 从SQL Server 2012中的年份,星期编号,日期名称中检索日期
- 28. 日期SQL Server加入
- 29. SQL Server日期时间ss.mmmZ
- 30. SQL Server日期范围
什么??????????? –
考虑到大约有140亿个“日期”,并且每个日期的无限次数,您将等待一段时间来查询结果。如果你想包括未来的日期,那么它也会延长几分钟。 –
所有日期?但我认为时间是无限的伟大...... – DMason