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