$dayOfYear (年内の通算日)
最終更新:2026-10-09
$dayOfYear (年内の通算日)
$dayOfYear は日付の年内の通算日(1 から 366)を返します。年間の進捗、季節分析、残り日数の計算などに便利です。数え始めは 1 で、平年は 365、うるう年は 366 が最大になります。UTC または指定したタイムゾーンで計算され、タイムゾーンによって境界が変わるため、timezone を明示的に渡してください。$dateToString の %j プレースホルダと組み合わせると、ゼロ埋めされた 3 桁の文字列を取得できます。
| カテゴリ | 日付 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $dayOfYear: { date: <date-expression>, timezone: <timezone> } }
⚙️ パラメータ
| date | 必須。日付式。 |
|---|---|
| timezone | 任意のタイムゾーン。既定は UTC。 |
戻り値:年内通算日(1〜366)を整数で返します。date が null の場合は null。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $dayOfYear: イベントの年内通算日
db.events.aggregate([
{ $project: {
doy: { $dayOfYear: '$eventDate' },
label: { $dateToString: { format: '%j', date: '$eventDate' } }
} }
])
出力:
{ "_id": 1, "doy": 268, "label": "268" }
{ "_id": 2, "doy": 1, "label": "001" }
📌 注意事項
- 1 月 1 日は 1。12 月 31 日は平年で 365、うるう年で 366
- ゼロ埋め 3 桁の文字列にするには %j を使う
- 境界は $week と同様に UTC/タイムゾーンに従う。統計前にタイムゾーンを統一する
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q年間の最大値は?
A平年で 365、うるう年で 366 です。
Q$dayOfMonth との違いは?
A$dayOfMonth は月内の日、$dayOfYear は年内の通算日です。
Q3 桁の文字列にするには?
A$dateToString の %j プレースホルダを使います。ゼロ埋めされます。