2017-11-08 8 views
0

mongoで月曜日を現地時間帯で取得する必要があります。今すぐ実行する場合

$dayOfMonth : ISODate("2017-10-19T00:00:00.000+01:00") 

私は18を取得しますが、私はローカルタイムゾーンでそれが必要です。 mongoに$dayOfMonthでローカルタイムゾーンを使用させる方法はありますか?または少なくともどのようにmongoでタイムゾーンオフセットを取得するには?

+1

のMongoDB 3.6が行うためのタイムゾーンのサポートを追加し3.6で以下の凝集を試すことができます。今はやめろ。タイムゾーンの調整と夏時間処理に関する詳細については、[MongoDBのローカルタイムゾーンを使用した日付別グループ](https://stackoverflow.com/a/45093686/2313887)を参照してください。そのことを明確にするために、BSON Dateにタイムゾーンが保存されていないため、「timezeone offsetを取得する」というようなことはありません。 BSONの日付はUTCです。しかし、私は言ったように、 "gory"の詳細。ポップコーンをつかんで、恐ろしい/教育を受けてください。それらの一つ。 –

+0

xタイムゾーンでISODateとして日付を保存してからyタイムゾーンで取得しようとすると、日付+ xタイムゾーンオフセットが得られるので、正確には真実ではないと思います。だから、どこかに格納されているタイムゾーンを持つ必要があります –

+1

実際にはタイムゾーンに格納されません。 Robo 3Tのようなもので実際に見ることができます。実際には「ローカル」時間を表示するオプションがあります。おそらく、その設定をオフにする必要があります。どのように「本当に」あるのかを見たい場合は、普通の 'mongo'シェルを使います。あなたがまだ私を疑っているなら、それは[BSON仕様](http://bsonspec.org/spec.html)にあります –

答えて

0

すべてdate operators.

db.collection_name.aggregate({ 
    "dayOfMonth": { 
    "$dayOfMonth": { 
     "date": "$date", 
     "timezone": "Europe/Amsterdam" 
    } 
    } 
})