信息:MS SQL Server 2008 R2MSSQL - 在範圍內查找DATE(函數?)
您好。我正在嘗試創建一個具有兩個參數輸入和一個輸出的函數。這兩個輸入是一週中的一天,INT(@dowin)從星期一開始爲1,還有一個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年2月11日07:30:00.000 根據@dowin 2014年2月10日至2014年2月16日 在此範圍內@newdate將是2014年2月12日07:: - @datein應該找到的範圍30:00.000
**E DIT* ** 我能夠大家用更簡單的功能assitance後解決:
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
您能不能告訴我們具體是什麼,你想獲得?到目前爲止,您是否遇到了具體的問題? – Andrew
@Andrew請參閱底部的更新。 –
@Andrew,因爲結果不一致,所以我沒有將您標記爲正確答案。我用一個更簡單的解決方案解決了這個問題。更新的問題。 –