2

年の特定の日を取得しようとしています。

これが私が今まで試したことです:-

-- Declare few variables
DECLARE @Currentdate AS DATETIME
DECLARE @DueDate AS DATETIME
DECLARE @NewDate AS DATETIME

-- Set the variables properly, just for testing
SET @Currentdate = GETDATE()                
SET @DueDate = DATEADD(MONTH, 2, DATEADD(YEAR, 1, @Currentdate))

-- Check the output
SELECT @Currentdate     -- 2013-09-30 00:00:00.000
SELECT @DueDate         -- 2014-11-30 00:00:00.000

@NewDateだから、私は年に基づいて取得したい@Currentdate。このために私は試しました: -

SELECT @NewDate = DATEADD(DAY, DAY(DATEDIFF(day, 1, @DueDate)), DATEADD(MONTH, DATEDIFF(MONTH, 0, @Currentdate), 0))
SELECT @NewDate    -- 2013-09-30 00:00:00.000

しかし、うまくいきませんでした。:(

私の期待される結果は次のようなものです:

-- 2013-11-30 00:00:00.000
-- Having the due date month and date same, but the year as current date one.

どんな助けでも大歓迎です!

アップデート

私が作成したすべての混乱をお詫び申し上げます。簡単な言葉での私の質問は次のとおりです。

変数と同じ日付と月を持つ新しい日付変数を取得したいのです@DueDateが、変数で指定された年@Currentdateです。

これで問題が少し解決することを願っています。

4

3 に答える 3

3

質問が「ある変数に特定の日時値がある場合、別の変数を同じ日と月に設定できますが、現在の年に設定できますか」という質問の場合、答えは次のようになります。

declare @DueDate datetime
declare @NewDate datetime

set @DueDate = '20141130'
--Need to set @NewDate to the same month and day in the current year

set @NewDate = DATEADD(year,
       --Here's how you work out the offset
       DATEPART(year,CURRENT_TIMESTAMP) - DATEPART(year,@DueDate),
    @DueDate)

select @DueDate,@NewDate

@DueDate 変数と同じ日付と月を持つ新しい日付変数を取得したいのですが、@Currentdate 変数で指定された年です。

まあ、それは単に上記のクエリに 1 つの調整を加えたものです。

set @NewDate = DATEADD(year,
       --Here's how you work out the offset
       DATEPART(year,@Currentdate) - DATEPART(year,@DueDate),
    @DueDate)
于 2013-09-30T14:46:10.263 に答える