所以我有一个愚蠢的问题,我以前没有使用太多的SQL Server,或者任何SQL。我基本上有一个我需要解决的小数学问题,我认为模数会很好。
我在数据库中有很多日期,但我需要将它们四舍五入到最接近的[动态整数](可以是0到5000000之间的任何值),每次调用此查询时都会将其作为参数输入。
所以我认为我会使用modulo来查找余数,然后从日期中减去剩余部分。 如果有更好的方法或综合功能,请告诉我!
那是什么语法?我已经尝试了很多东西,但我不断收到错误消息,如整数/浮点数/小数不能与模运算符一起使用。我尝试转换为各种数值数据类型。
任何帮助都将不胜感激。
答案 0 :(得分:1)
Create function [GetNDates]
(
@NumberOfDates int,
@StartDate DateTime,
@EndDate DateTime
)
Returns @DatesTable table
(
MyDate DateTime
)
As
Begin
Declare @TotalDays int
Declare @Increment int
Declare @Counter int
Declare @DateCounter DateTime
SET @Counter = 0
SELECT @DateCounter = @StartDate
SELECT @TotalDays = DATEDIFF(day, @StartDate, @EndDate)
SET @Increment = @TotalDays / @NumberOfDates
WHILE @Counter < @NumberOfDates
BEGIN
SET @DateCounter = DATEADD(Day, @Increment, @DateCounter)
INSERT INTO @DatesTable (MyDate) VALUES (@DateCounter)
SET @Counter = @Counter + 1
END
Return
End
GO
select * from dbo.GetNDates(40, '1/1/2010', '12/31/2010')