MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで年・月・日の各要素を組み合わせて日付に変換する方法

MongoDBでは、年・月・日がバラバラのフィールドとして保存されているデータを、集計パイプラインの $dateFromParts$dateToString を組み合わせることで、1つの日付形式の文字列に変換できます。この記事では、その具体的な手順をサンプルコードとともに解説します。

サンプルコレクションの作成

まず、日付要素を含むドキュメントを持つコレクションを作成します。

> db.demo386.insert(
...     {
...         details: { Month: 02, Day: 27, Year: 2020 }
...     }
... );
WriteResult({ "nInserted" : 1 })

ドキュメントの確認

find() メソッドを使用して、コレクション内のすべてのドキュメントを表示してみましょう。

> db.demo386.find();

実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5e5bd9a222064be7ab44e7f7"), "details" : { "Month" : 2, "Day" : 27, "Year" : 2020 } }

ご覧のとおり、「Month」「Day」「Year」がそれぞれ独立した数値フィールドとして格納されています。

日付要素を日付に変換するクエリ

次のクエリでは、$dateFromParts で年・月・日の各フィールドから日付オブジェクトを生成し、さらに $dateToString で指定したフォーマットの文字列に変換しています。

> db.demo386.aggregate(
...     {"$project":{
...         "_id":0,
...         "DueDate":{
...             "$dateToString":{
...                 "format":"%m-%d-%Y",
...                 "date":{"$dateFromParts": {"year":"$details.Year","month":"$details.Month","day":"$details.Day"}}
...             }
...         }
...     }}
... );

実行結果は以下のとおりです。

{ "DueDate" : "02-27-2020" }

クエリのポイント解説

  • $dateFromParts:年(year)、月(month)、日(day)などのフィールドを指定して、新しい日付オブジェクトを作成する演算子です。
  • $dateToString:日付オブジェクトを文字列に変換する演算子で、format に「%m(月)」「%d(日)」「%Y(4桁の年)」などの指定子を使って出力形式を自由に制御できます。
  • $project:出力するフィールドを制御するステージで、ここでは _id を非表示にし、変換結果を「DueDate」という新しいフィールドとして出力しています。

このように、分割されて保存されている日付情報も、MongoDBの集計フレームワークを使えば簡単に統合された日付形式へ変換できます。フォーマット指定子を変更すれば、「2020-02-27」のようなISO形式など、用途に応じたさまざまな形式で出力することも可能です。

  1. MongoDBで生年月日を年齢に変換する方法

    MongoDBでは、集計パイプライン(aggregate)を活用することで、保存されている生年月日(DateOfBirth)のデータから現在の年齢を簡単に算出できます。この記事では、実際のコード例を使いながらその手順をわかりやすく解説します。1. コレクションにドキュメントを挿入するまずは、生年月日を含むドキュメントを持つコレクションを作成します。以下のように insertOne() メソッドを使用します。> db.demo754.insertOne({DateOfBirth:new Date(2000-05-03)}); { acknowledged : true, ins

  2. UK形式(イギリス式)の日付をMySQLの日付型に変換する方法

    UK形式の日付をMySQLに変換するには?イギリスで一般的に使われている日付形式は「日-月-年」の順序です。例えば「10/11/2019」は2019年11月10日を意味します。この形式の文字列をMySQLの日付型に変換したい場合は、STR_TO_DATE() 関数を使用します。基本構文変換の構文は以下のとおりです。SELECT STR_TO_DATE(対象カラム名, %d/%m/%Y) FROM テーブル名;フォーマット指定子の意味は次の通りです。%d … 日(2桁)%m … 月(2桁)%Y … 年(4桁)サンプルテーブルの作成まず、UK形式の日付をVARCHAR型で格納するテーブルを作成しま