問題:
PostgreSQLデータベースの日付またはタイムスタンプ値の週番号を取得する必要があります。
例:
私たちのデータベースには、children id列にデータがあります 、first_name 、last_name 、およびbirth_date 。
| id | first_name | last_name | birth_date |
|---|---|---|---|
| 1 | アンジェラ | ミシュラン | 2018-01-01 |
| 2 | マーティン | ジャクソン | 2002-07-26 |
| 3 | ジャスティン | クラーク | 2010-12-26 |
| 4 | フランク | バーカー | 2008-06-08 |
子供ごとに、名前、名前、生年月日の週番号を取得しましょう。
ソリューション1:
DATE_PART()を使用します 働き。作成するクエリは次のとおりです。
SELECT first_name,
last_name,
DATE_PART('week',birth_date)
AS birth_week_number
FROM children;
クエリの結果は次のとおりです。
| first_name | last_name | birth_week_number |
|---|---|---|
| アンジェラ | ミシュラン | 1 |
| マーティン | ジャクソン | 30 |
| ジャスティン | クラーク | 51 |
| フランク | バーカー | 23 |
ディスカッション:
DATE_PART()を使用します PostgreSQLデータベースの日付から週番号を取得する関数。この関数は2つの引数を取ります。最初の引数は、取得する日付部分です。週番号を返す「week」を使用します(たとえば、1月の最初の週である「1」はその年の最初の週です)。日、年、月、時、分、doy(年の日の数字)など、別の日付部分を使用できます。日付部分の詳細については、PostgreSQLのドキュメントをご覧ください。
2番目の引数は、日付/タイムスタンプ/タイムスタンプデータ型の列名、またはこれらの型の1つを返す式です。 (この例では、 dateの列です。 データ型。)
「週」の日付部分と一緒に使用すると、関数DATE_PART() 週番号を整数として返します。この例では、特定の子供の生年月日の週番号が表示されます。この列にbirth_week_numberという名前を付けました 。マーティンジャクソンは2002-07-26で生まれました 、したがって、関数は彼の生年月日の週番号として「30」を返します。
DATE_PART() 週番号を取得する1つの方法だけではありません。もう1つのオプションは、EXTRACT()を使用することです。 機能。
ソリューション2:
EXTRACT()を使用します 働き。作成するクエリは次のとおりです。
SELECT first_name,
last_name,
EXTRACT('week' FROM birth_date)
AS birth_week_number
FROM children;
この関数はDATE_PART()に似ています 。違いは構文にあります。日付部分名と列/式の間のコンマの代わりに、キーワードFROMがあります。また、EXTRACT() 関数はSQL標準です。結果は両方の関数で同じです。