$dateFromString (文字列を日付に解析)

最終更新:2026-10-09

$dateFromString (文字列を日付に解析)

$dateFromString は指定したフォーマットを使って文字列を日付に解析します。$dateToString の逆関数で、インポートした日付文字列やフロントエンドの日付文字列を BSON Date に変換するのに便利です。format には $dateToString と同じプレースホルダ(%Y、%m、%d...)を使います。format を省略すると ISO 8601 として解釈されます。onError は解析失敗時のフォールバックを、onNull は入力が null のときの値を指定します。timezone は文字列にタイムゾーン情報がない場合に適用されるゾーンを決めます。

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

📝 構文

{ $dateFromString: { dateString: <string>, format: <format>, timezone: <timezone>, onError: <default>, onNull: <default> } }

⚙️ パラメータ

dateString必須。解析する日付文字列。
format任意の書式パターン。既定は ISO 8601。
timezone文字列にタイムゾーン情報がない場合に適用される任意のタイムゾーン。
onError / onNull解析失敗時と null 入力時の任意のフォールバック。

戻り値:解析された BSON Date。失敗時は onError(既定では例外を送出)、null 入力時は onNull(既定では null)。

▶ 例

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

// $dateFromString: インポートしたログのタイムスタンプを解析(北京時間)
 db.imports.aggregate([
  { $project: {
      createdAt: { $dateFromString: { dateString: '$ts', format: '%Y-%m-%d %H:%M', timezone: 'Asia/Shanghai' } }
  } }
])

出力:

{ "_id": 1, "createdAt": ISODate("2026-09-25T08:30:00Z") }
{ "_id": 2, "createdAt": ISODate("2026-09-25T09:00:00Z") }

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Qフォーマットがまちまちな文字列を解析するには?
Aformat を省略すると ISO 8601 を試します。フォーマットが固定の場合は format を明示的に渡します。
Q解析に失敗するとエラーになりますか?
Aはい。onError でフォールバックを指定していない限りエラーになります。
Q$toDate との違いは?
A$toDate は緩い型変換です。$dateFromString はフォーマットとタイムゾーンを精密に制御できます。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%