0

SQL Server 2008 を使用して、現在の日付に基づく動的な値を持つ SSIS 変数を作成しました。現在の日が月曜日の場合、その値を金曜日にしたいと思います。式は次のように作成されます。

    DATEPART("dw",GETDATE()) != 2?
RIGHT("0" + (DT_WSTR,2)MONTH(DATEADD("dd", -1, GETDATE())), 2) + "/" 
    + RIGHT("0" + (DT_WSTR,2)DAY(DATEADD("dd", -1, GETDATE())), 2) + "/" + 
(DT_WSTR,4)YEAR(DATEADD("dd", -1, GETDATE())) : RIGHT("0" + (DT_WSTR,2)MONTH(DATEADD("dd", -1, GETDATE())), 2) + "/" 
    + RIGHT("0" + (DT_WSTR,2)DAY(DATEADD("dd", -3, GETDATE())), 2) + "/" + 
(DT_WSTR,4)YEAR(DATEADD("dd", -1, GETDATE()))

問題: 月または年がいつ変わったかは正確ではありません。これを行うより良い方法はありますか?助けていただければ幸いです。ありがとう。

4

1 に答える 1

2

これは機能しますか(代わりGETDATE()に使用できます。これ@dateを使用して、さまざまな日付を簡単にテストしました)

DECLARE @date DATETIME
SET @date = '2013-01-14'

SELECT
    PrevFriday = CASE WHEN DATEPART(weekday, @date) <> 2 THEN @date
                      ELSE DATEADD(DAY, -3, @date)
                 END

更新:これは同じですが、SSIS変数式で行われます:

DATEPART("dw", GETDATE()) != 2?
GETDATE():
DATEADD("dw", -3, GETDATE())

更新#2:月曜日だけでなく、任意の日付の前の金曜日を返す方法は次のとおりです

SELECT DATEADD(DAY, -1 - (DATEPART(weekday, @date) % 7), @date)
于 2013-01-11T20:56:21.250 に答える