$dateFromParts (部品から日付を組み立て)

最終更新:2026-10-09

$dateFromParts (部品から日付を組み立て)

$dateFromParts は year、month、day、hour、minute、second、millisecond などの数値部品から日付を組み立てます。$dateToParts の逆関数です。カレンダー方式(year、month、day...)と ISO 8601 週方式(isoWeekYear、isoWeek、isoDayOfWeek)の 2 つのモードがあります。未指定のフィールドは最小値を取ります(month は 1、hour は 0 が既定)。保存された部品から日付を再構築したり、範囲の境界を組み立てたりするのに便利です。timezone は結果の日付のタイムゾーンを設定し、既定は UTC です。

カテゴリ日付
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $dateFromParts: { year: <number>, month: <number>, day: <number>, hour: <number>, minute: <number>, second: <number>, millisecond: <number>, timezone: <timezone> } }

⚙️ パラメータ

year必須。カレンダーモードでは year、ISO モードでは isoWeekYear。
month / isoWeek月(既定 1)または ISO 週。どちらか一方のモードのフィールドのみ使用してください。
day / isoDayOfWeek日(既定 1)または ISO 曜日。
hour/minute/second/millisecond任意。既定は 0。
timezone構築する日付の任意のタイムゾーン。

戻り値:構築された BSON Date。year が欠落している場合は null。

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $dateFromParts: 部品からイベント時刻を再構築(北京時間)
db.events.aggregate([
  { $project: {
      startedAt: { $dateFromParts: { year: '$y', month: '$m', day: '$d', timezone: 'Asia/Shanghai' } }
  } }
])

出力:

{ "_id": 1, "startedAt": ISODate("2026-09-25T00:00:00Z") }
{ "_id": 2, "startedAt": ISODate("2026-10-01T00:00:00Z") }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Qyear だけで日付を組み立てられますか?
Aはい。month は 1、day は 1、時刻部品は 0 が既定になります。
Qカレンダー方式と ISO 方式を混在できますか?
Aいいえ。両者は排他的で、混在するとエラーになります。
Q範囲外の値はエラーになりますか?
Aはい。month 13 や day 32 などはエラーになります。渡す前に検証してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%