Microsoft SQL Server 2005 - 使用模运算符

时间:2010-04-15 22:54:18

标签: sql sql-server

所以我有一个愚蠢的问题,我以前没有使用太多的SQL Server,或者任何SQL。我基本上有一个我需要解决的小数学问题,我认为模数会很好。

我在数据库中有很多日期,但我需要将它们四舍五入到最接近的[动态整数](可以是0到5000000之间的任何值),每次调用此查询时都会将其作为参数输入。

所以我认为我会使用modulo来查找余数,然后从日期中减去剩余部分。 如果有更好的方法或综合功能,请告诉我!

那是什么语法?我已经尝试了很多东西,但我不断收到错误消息,如整数/浮点数/小数不能与模运算符一起使用。我尝试转换为各种数值数据类型。

任何帮助都将不胜感激。

1 个答案:

答案 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')