Date() と Datetime
Date()
日付を文字列または Date オブジェクトとして返します。この日付には日付と時刻を含むことができ、これはdatetime として知られているます。
BSON 仕様
Date
は、 オブジェクトに UTC 日時 が含まれていることを示します。UTC は協定世界時です。 UTC 日時は、符号なしの64 ビット整数値を保存し、Unix エポック( 1 月1 日、1970 の時刻00 :00 :00 UTC)からの経過ミリ秒数を示します。
互換性
次の環境でホストされる配置には Date()
を使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
次のいずれかの形式を指定できます。
Date()
現在の日付を文字列としてmongosh
に返します。new Date()
は、現在の日付を Date オブジェクトとして返します。mongosh
は Date オブジェクトをISODate
ヘルパーでラップします。ISODate
は UTC です。
特定の日付を指定するには、 0
から 9999
まで(両端を含める)の年を指定した ISO-8601 date string を new Date()
コンストラクターまたは ISODate()
関数に渡します。これらの関数は、次の形式を受け入れます。
new Date("<YYYY-mm-dd>")
では、指定された日付のISODate
を返します。new Date("<YYYY-mm-ddTHH:MM:ss>")
では、クライアントのローカル タイムゾーンの日時を指定し、UTC で指定された日時のISODate
を返します。new Date("<YYYY-mm-ddTHH:MM:ssZ>")
では、UTC で日時を指定し、UTC で指定された日時のISODate
を返します。new Date(<integer>)
では、UNIX エポック(1970 年 1 月 1 日)からの日時をミリ秒で指定し、結果のISODate
インスタンスを返します。
動作
内部的には、 Date オブジェクトは、UNIX エポック(1970 年 1 月 1 日)からのミリ秒数を表す符号付き 64 ビット整数として保存されます。
すべてのデータベース操作とドライバーが64 ビット範囲全体をサポートしているわけではありません。年が 0
から 9999
まで(両端を含める)の範囲内にある日付であれば安全に処理できます。
例
クエリでの日付の使用
products
コレクションに _id
が 1
のドキュメントが存在しない場合、次の操作を行うことで、フィールド dateAdded
に現在の日付が設定されたドキュメントが挿入されます。
db.products.updateOne( { _id: 1 }, { $set: { item: "apple" }, $setOnInsert: { dateAdded: new Date() } }, { upsert: true } )
日付を文字列として返す
日付を文字列として返すには、Date()
メソッドを使用します。例は次のとおりです。
var myDateString = Date();
オブジェクトとして日付を返すDate
mongosh
は、Date型のオブジェクトをISODate
ヘルパーでラップします。ただし、オブジェクトはDateタイプです。
次の例では、new Date()
を使用して、指定された UTC 日時を持つ Date オブジェクトを返します。
var myDate = new Date("2016-05-18T16:00:00Z");
ISODate
オブジェクトを挿入して返す
日付を ISODate
オブジェクトとして指定できます。
次の例では、 orderDate
フィールドに ISODate
オブジェクトを含む cakeSales
コレクションを作成します。
db.cakeSales.insertMany( [ { _id: 0, type: "chocolate", orderDate: new ISODate("2020-05-18T14:10:30Z") }, { _id: 1, type: "strawberry", orderDate: new ISODate("2021-03-20T11:30:05Z") }, { _id: 2, type: "vanilla", orderDate: new ISODate("2021-01-15T06:31:15Z") } ] )
次の例では、orderDate
が $lt
演算子に指定された ISODate
より以前のドキュメントを返します。
db.cakeSales.find( { orderDate: { $lt: ISODate("2021-02-25T10:03:46.000Z") } } )
出力例:
[ { _id: 0, type: 'chocolate', orderDate: ISODate("2020-05-18T14:10:30.000Z") }, { _id: 2, type: 'vanilla', orderDate: ISODate("2021-01-15T06:31:15.000Z") } ]