2年の範囲の月の日付数を取得する方法

マンドレク

その年に月の日数と月の名前を入力するプロシージャを作成する必要があります。これは、特定の年から始まり、終了年になります。たとえば、

YEAR  MONTH DAYS
2015  JAN   31
2015  FEB   28
.
.
2015 DEC    30

そのように。これを行う方法を教えてください。私はこのように毎年の年間の合計月数と日数を決定することができます

declare @y int;
declare @cnt int = 2015;
set @y = 2012;
while @y<@cnt
begin 
SELECT DATEDIFF(MONTH,  cast(@y as char(4)),  cast(@y+1 as char(4)))    Months ,DATEDIFF(DAY,  cast(@y as char(4)),  cast(@y+1 as char(4))) Days ,@y Year
set @y = @y+1;
end;

これにより、年、その月数、および1年の日数がわかります。ただし、これを入力することはできません。

デビッドラシュトン

あなたが本当に心配する必要がある唯一の月は2月です。4で均等に割るほとんどの年はうるう年です(いくつかの例外があります)。

このクエリは月をハードコードします。再帰を使用した年のリストを生成するために、これはコピー/貼り付けできるためです。ただし、これを行うには、集計テーブルカレンダーテーブルなど、より良い方法があります。どちらも強くお勧めします。

DECLARE @StartYear INT = 2000;
DECLARE @EndYear INT = 2020;

WITH 
    Years AS
    (
            SELECT
                @StartYear AS Year

        UNION ALL

            SELECT 
                Year + 1
            FROM
                Years
            WHERE
                Year < @EndYear
    )
SELECT
    y.Year,
    DaysInMonth.Month,
    CASE
        -- Feb logic based on: https://en.wikipedia.org/wiki/Leap_year#Algorithm
        WHEN DaysInMonth.Month = 'Feb' THEN
            CASE 
                WHEN y.Year % 4 = 0 AND y.Year % 100 = 0 AND y.Year % 400 = 0 THEN 29
                WHEN y.Year % 4 = 0 AND y.Year % 100 <> 0 THEN 29
                ELSE 28
            END                
        ELSE DaysInMonth.Days
    END
FROM
    (
        VALUES
            ('Jan', 31),
            ('Feb', 28),
            ('Mar', 31),
            ('Apr', 30),
            ('May', 31),
            ('Jun', 30),
            ('Jul', 31),
            ('Aug', 31),
            ('Sep', 30),
            ('Oct', 31),
            ('Nov', 30),
            ('Dec', 31)
    ) AS DaysInMonth (Month, Days)

    CROSS JOIN Years AS y
;

これをプロシージャ内にラップするには

CREATE PROCEDURE YourSchema.YourProcedureName
(
    @StartYear INT,
    @EndYear INT
)
AS
    SET NOCOUNT ON;

    WITH
        Years AS
    ...
    CROSS JOIN Years AS y
GO

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

DATEDIF関数を使用して2つの日付範囲の合計を追加する(年、月、日形式で表示)

分類Dev

2つの日付範囲の間の日数を取得する方法

分類Dev

Javascriptの年/月/日の2つの日付の違いを取得する方法

分類Dev

Java:月のx日間の日付を取得する方法(例:2012年2月の第3月曜日)

分類Dev

2つの日付の間の月ごとの日付範囲のリストを取得するSQLクエリ

分類Dev

月、日、年が2つの日付の範囲内にあるかどうかを確認する

分類Dev

SQLで前月の日付範囲を自動的に取得する方法は?

分類Dev

2つの日付の間の月と年のリストを取得する方法

分類Dev

2つの日付の間の月と年のリストを取得する方法

分類Dev

月に基づく日付の先週の日付範囲を取得する

分類Dev

文字列の日付から日、月、年を取得する方法は?

分類Dev

各月の日付範囲を分割する方法

分類Dev

PowerShellで日付範囲を毎月のサブ範囲に分割する方法は?

分類Dev

HPUFT-2つの入力日付から日付範囲を取得する方法

分類Dev

日付範囲間の日の頻度を取得する方法

分類Dev

特定の日付範囲の各月の行数を取得します

分類Dev

2つの日付の間の年と年のリストで月の名前を取得する方法

分類Dev

この形式 (2017 年 3 月 20 日) のように現在の週の日付の範囲を取得するにはどうすればよいですか?

分類Dev

2つの日付パラメータから月の範囲の間の数量を取得する

分類Dev

異なるクライアントの異なる範囲でSQL-oracleの2つの日付の間のすべての月を取得する方法

分類Dev

架空の日付で「ValueError:日が月の範囲外」を回避する方法は?

分類Dev

特定の日付範囲の連続する月を取得します

分類Dev

Pythonで前月の最初の日付と最後の日付の日付範囲を計算する方法

分類Dev

2つの日付の範囲の間の週/月/四半期のリストを作成する方法

分類Dev

特定の月と年の週の日付範囲を見つける

分類Dev

特定の週番号の日付範囲を取得する方法

分類Dev

Oracle:2つの日付の間の月に範囲を作成する

分類Dev

日付範囲がカバー/発生する年の週数を数える

分類Dev

moment.jsを使用して、年、月、日の2つの日付の差を取得する方法

Related 関連記事

  1. 1

    DATEDIF関数を使用して2つの日付範囲の合計を追加する(年、月、日形式で表示)

  2. 2

    2つの日付範囲の間の日数を取得する方法

  3. 3

    Javascriptの年/月/日の2つの日付の違いを取得する方法

  4. 4

    Java:月のx日間の日付を取得する方法(例:2012年2月の第3月曜日)

  5. 5

    2つの日付の間の月ごとの日付範囲のリストを取得するSQLクエリ

  6. 6

    月、日、年が2つの日付の範囲内にあるかどうかを確認する

  7. 7

    SQLで前月の日付範囲を自動的に取得する方法は?

  8. 8

    2つの日付の間の月と年のリストを取得する方法

  9. 9

    2つの日付の間の月と年のリストを取得する方法

  10. 10

    月に基づく日付の先週の日付範囲を取得する

  11. 11

    文字列の日付から日、月、年を取得する方法は?

  12. 12

    各月の日付範囲を分割する方法

  13. 13

    PowerShellで日付範囲を毎月のサブ範囲に分割する方法は?

  14. 14

    HPUFT-2つの入力日付から日付範囲を取得する方法

  15. 15

    日付範囲間の日の頻度を取得する方法

  16. 16

    特定の日付範囲の各月の行数を取得します

  17. 17

    2つの日付の間の年と年のリストで月の名前を取得する方法

  18. 18

    この形式 (2017 年 3 月 20 日) のように現在の週の日付の範囲を取得するにはどうすればよいですか?

  19. 19

    2つの日付パラメータから月の範囲の間の数量を取得する

  20. 20

    異なるクライアントの異なる範囲でSQL-oracleの2つの日付の間のすべての月を取得する方法

  21. 21

    架空の日付で「ValueError:日が月の範囲外」を回避する方法は?

  22. 22

    特定の日付範囲の連続する月を取得します

  23. 23

    Pythonで前月の最初の日付と最後の日付の日付範囲を計算する方法

  24. 24

    2つの日付の範囲の間の週/月/四半期のリストを作成する方法

  25. 25

    特定の月と年の週の日付範囲を見つける

  26. 26

    特定の週番号の日付範囲を取得する方法

  27. 27

    Oracle:2つの日付の間の月に範囲を作成する

  28. 28

    日付範囲がカバー/発生する年の週数を数える

  29. 29

    moment.jsを使用して、年、月、日の2つの日付の差を取得する方法

ホットタグ

アーカイブ