信息:MS SQL Server 2008 R2
你好。我正在尝试创建一个具有两个参数输入和一个输出的函数。这两个输入是从星期一开始的 INT(@dowin) 和一个 DATETIME(@datein) 的星期几。该函数的目的是通过查看从 (@datein) 创建的周范围并使用星期几 INT (@dowin) 从该范围中选择新的 DATETIME 来确定新的 DATETIME 输出 (@newdate)。
原因:约会计划程序正在使用开始日期,如果约会再次发生,它会创建从开始日期重新发生的一周中的一天。我正在从表视图创建一个 SSRS 报告,我需要每个约会发生的实例。
这是我到目前为止的功能脚本:
CREATE FUNCTION UFsurgopsched(@datein DATETIME,@dowin int)
RETURNS datetime
AS
BEGIN
DECLARE @newdate datetime
DECLARE @startOfWeek date
DECLARE @endOfWeek date
SELECT @newdate = datepart(dw,@dowin) as date in
(
SELECT
convert(date, dateadd(dd, -1*(datepart(dw, @datein)-2), @datein)) AS @startOfWeek,
convert(date, dateadd(dd, 7-(datepart(dw, @datein)-1), @datein)) AS @endOfWeek
)
RETURN @newdate
END
我想得到什么: - @dowin = 3 - @datein = 2014-02-11 07:30:00.000 - @datein 应该找到范围:2014-02-10 到 2014-02-16 在该范围内@newdate 根据@dowin 将是 2014-02-12 07:30:00.000
**编辑* ** 在大家的帮助下,我能够用一个更简单的功能解决:
CREATE FUNCTION [dbo].[UFsurgopsched](@datein DATETIME,@dowin int)
RETURNS DATETIME
AS
BEGIN
DECLARE @newdate DATETIME
DECLARE @dateweek DATETIME
SET
@dateweek =
convert(datetime, dateadd(dd, -1*(datepart(dw, @datein)-2), @datein))
SELECT
@newdate =
dateadd(DD ,@dowin - 1, @dateweek)
RETURN
@newdate
END