問題:
T-SQLで特定の日付の月末日を検索したい。
例:
私たちのデータベースには、Furniture
Id
列にデータがあります 、Name
、およびPurchaseDate
。
Id | 名前 | PurchaseDate |
---|---|---|
1 | ソファ | 2019-02-10 |
2 | デスク | 2019-04-01 |
3 | 本棚 | 2019-05-20 |
商品の名前と購入日、およびこれらの商品を購入した月の最終日を取得しましょう。
解決策:
関数EOMONTH()を使用して、月の最終日を検索します。
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate) AS LastDayDate FROM Furniture;
クエリの結果は次のとおりです。
名前 | PurchaseDate | LastDayDate |
---|---|---|
ソファ | 2019-02- 10 | 2019-02- 28 |
デスク | 2019-04- 01 | 2019-04- 30 |
本棚 | 2019-05- 20 | 2019-05- 31 |
ディスカッション:
特定の日付の月の最終日を含む日付を取得する場合は、EOMONTH()関数を使用します。この関数は、1つの必須の引数を取ります。日付(または日付と時刻)です。これは、日付/日時列または日付を返す式にすることができます。 (この例では、PurchaseDate
を使用します 列。)
EOMONTH()は、引数と同じ月の最終日を返します。購入日が「2019-02-10」のソファに対する上記のクエリは、「2019-02-28」を返します。 2019年2月、月末は28日でした。
特定の日付から2番目、3番目などの月の最終日を返す場合は、EOMONTH()のオプションの2番目の引数である追加する月数を使用します。例を見てください:
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,1) AS LastDayDate FROM Furniture;
クエリの結果は次のとおりです。
名前 | PurchaseDate | LastDayDate |
---|---|---|
ソファ | 2019- 02 - 10 | 2019- 03 - 30 |
デスク | 2019- 04 - 01 | 2019- 05 - 31 |
本棚 | 2019- 05 - 20 | 2019- 06 - 30 |
購入日が「2019-02-10」のソファの場合、このクエリは「2019-03-30」(次のの最終日)を返します。 月。今月末に1か月追加しました。
前の月の最終日を検索する場合 特定の月に、2番目の引数として負の値(「-1」など)を使用します:
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,-1) AS LastDayDate FROM Furniture;
クエリの結果は次のとおりです。
名前 | PurchaseDate | LastDayDate |
---|---|---|
ソファ | 2019- 02 - 10 | 2019- 01 - 31 |
デスク | 2019- 04 - 01 | 2019- 03 - 31 |
本棚 | 2019- 05 - 20 | 2019- 04 - 30 |