sql >> データベース >  >> RDS >> Sqlserver

日付を渡すとNextDayofWeekを取得する方法は?

    以下は私にとってはうまくいきます:

    declare @TransactionDate DATETIME
    DECLARE @TransactionDay tinyint
    declare @startDate datetime
    declare @startDay int
    declare @NextTransactionDate datetime
    --Monday
    set @TransactionDate = '2011-05-05'
    SET @TransactionDay = DATEPART(dw, @TransactionDate)
    --Wednesday
    set @startDate = '2011-04-27'
    set @startDay = datepart(dw,@startDate)
    
    
    
    set @NextTransactionDate= DATEADD(DAY, ((@startDay - @TransactionDay) + 7) % 7 ,@TransactionDate);  
    
    select @startDay, DATEPART(dw, @NextTransactionDate), @NextTransactionDate
    

    その本質を説明するために、startDate と transactionDate の曜日の違いを見つけています。これに 14 を加えます。これは、正の数を法とする負の数が負の数になり、次の取引日が過去の日付になるためです (そして、それは望ましくありません)。最悪のケースは、@startDay が 1 で @TransactionDay が 7 の場合で、差が -6 になります。 7 を足すと、その差は確実に正になりますが、リング n mod 7 の実際の差と同じ等価クラスになります (申し訳ありません... 私は少し数学オタクです)。



    1. linuxmysql-serverがmysql_configを見つけることができません

    2. SQLServerでのトリグラムワイルドカード文字列検索

    3. 英数字ソート

    4. PHP / MySQLを使用してデータアクセスをカプセル化するための良い方法は何ですか?