MongoDBシェルで日付の値をフォーマットする方法
MongoDBで$dateToStringを使った日付フォーマット
MongoDBで日付の値を任意の形式にフォーマットしたい場合は、集計パイプラインで$dateToString演算子を使用します。$dateToStringを使うと、ISODate型の日付を「年-月-日 時-分」のような読みやすい文字列に変換できます。
ここでは、実際にドキュメントを含むコレクションを作成しながら、具体的な手順を見ていきましょう。
サンプルデータの作成
まず、日付フィールドを持つドキュメントを複数件挿入して、テスト用のコレクション「demo480」を作成します。
> db.demo480.insertOne({id:1,"DueDate":new ISODate("2020-01-10")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e821056b0f3fa88e2279098") }
> db.demo480.insertOne({id:1,"DueDate":new ISODate("2017-12-21")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e821062b0f3fa88e2279099") }
> db.demo480.insertOne({id:1,"DueDate":new ISODate("2019-10-12")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e82106ab0f3fa88e227909a") }
> db.demo480.insertOne({id:1,"DueDate":new ISODate("2019-12-01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e821078b0f3fa88e227909b") }登録したドキュメントの確認
find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo480.find();
このクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e821056b0f3fa88e2279098"), "id" : 1, "DueDate" : ISODate("2020-01-10T00:00:00Z") }
{ "_id" : ObjectId("5e821062b0f3fa88e2279099"), "id" : 1, "DueDate" : ISODate("2017-12-21T00:00:00Z") }
{ "_id" : ObjectId("5e82106ab0f3fa88e227909a"), "id" : 1, "DueDate" : ISODate("2019-10-12T00:00:00Z") }
{ "_id" : ObjectId("5e821078b0f3fa88e227909b"), "id" : 1, "DueDate" : ISODate("2019-12-01T00:00:00Z") }日付をフォーマットする集計クエリ
続いて、MongoDBシェルで日付の値をフォーマットするためのクエリを見てみましょう。aggregate()の中で$match、$sort、$projectを組み合わせ、$projectステージ内で$dateToStringにより日付を文字列化しています。
> db.demo480.aggregate([
... { "$match": { "id" : 1 } },
... { "$sort": { "DueDate": -1 } },
... {
... "$project": {
... "_id": 0,
... "DueDate": {
... "$dateToString": {
... "format": "%Y-%m-%d %H-%M",
... "date": "$DueDate"
... }
... }
... }
... }
... ])実行結果
上記の集計クエリを実行すると、「YYYY-MM-DD HH-MM」形式に変換された日付が降順(新しい日付順)で出力されます。
{ "DueDate" : "2020-01-10 00-00" }
{ "DueDate" : "2019-12-01 00-00" }
{ "DueDate" : "2019-10-12 00-00" }
{ "DueDate" : "2017-12-21 00-00" }主なフォーマット指定子
$dateToStringのformatオプションでは、以下のような指定子を組み合わせて自由に出力形式をカスタマイズできます。
- %Y:年(4桁)
- %m:月(2桁)
- %d:日(2桁)
- %H:時(24時間表記・2桁)
- %M:分(2桁)
- %S:秒(2桁)
たとえば「%Y年%m月%d日」と指定すれば、日本式の日付表現で出力することも可能です。用途に応じてformat文字列を調整してください。
-
MongoDBで日付形式を変更する方法
```html MongoDBシェルでは、文字列として扱われている日付の形式を自由に変換できます。本記事では、split()メソッドとカスタム変数を使って、日付フォーマットを変換する手順を具体例とともに解説します。 変換前の日付データ 今回は、次のような「日-月-年(DD-MM-YYYY)」形式の日付を例にします。 01-10-2019 日付形式を変換する手順 この日付を「年-月-日(YYYY-MM-DD)」形式に変更します。まず、日付文字列をカスタム変数に格納し、split()メソッドで分割してから、文字列として組み立て直します。 区切り文字には正規表現 /-|\// を使用しているため
-
MySQLで日付形式から数値の日付値を抽出する方法
MySQLで日付形式から数値の日付値を抽出する方法MySQLで「31-Jan-19」のような文字列として保存された日付データを数値(UNIXタイムスタンプ)に変換したい場合は、UNIX_TIMESTAMP() 関数と STR_TO_DATE() 関数を組み合わせて使用します。基本的な構文は以下の通りです。select UNIX_TIMESTAMP(STR_TO_DATE(yourColumnName, %d-%b-%y)) as anyAliasName from yourTableName;サンプルテーブルの作成まず、動作確認用のテーブルを作成します。mysql> create tab