我有这个问题的不同解释:“如何生成所有在一定范围内的日期”
下面是一个解决方案:
--define start and end limits
Declare @todate datetime, @fromdate datetime
Select @fromdate='2009-03-01', @todate='2009-04-10'
;With DateSequence(Date) as
(
Select @fromdate as Date
union all
Select dateadd(day, 1, Date)
from DateSequence
where Date < @todate
)
--select result
Select * from DateSequence option (MaxRecursion 1000)
有一个很好的article,显示了如何生成使用CTE序列(数字,日期,时间)。
编辑:
澄清后,这个问题似乎是日期格式是输入:DD/MM/YYYY。
SQL Server预计格式为mm/dd/yyyy。
我只想运行SELECT语句前改造它:
-- Assuming two variables, @inputFromDate and @inputToDate, in the format of dd/mm/yyyy...
declare @fromDate varchar(10), @toDate varchar(10)
set @fromDate =
substring(@inputFromDate, 3, 2) + '/' +
substring(@inputFromDate, 1, 2) + '/' +
substring(@inputFromDate, 7, 4)
set @toDate =
substring(@inputToDate, 3, 2) + '/' +
substring(@inputToDate, 1, 2) + '/' +
substring(@inputToDate, 7, 4)
select * from SomeTable where dateCol >= @fromDate and dateCol < @toDate
-- you can change the <or>= comparisons according to your needs
你应该从问题的一个例子澄清你的问题。 – 2010-03-14 16:08:09