2017-11-08 10 views
0

현지 시간대의 mongo에서 날짜를 받아야합니다. 지금 내가 실행하면

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

나는 18을 얻는다. 그러나 나는 그것을 현지 시간대에서 필요로한다. 몽고가 $dayOfMonth으로 현지 시간대를 사용하도록하는 방법이 있습니까? 또는 적어도 mongo에서 시간대 오프셋을 얻는 방법?

+1

MongoDB를 3.6 수행을 위해 시간대 지원을 추가 3.6에서 아래의 집계를 시도 할 수 있습니다. 지금은 아니야. 시간대 조정 및 일광 절약 시간 처리에 대한 모든 "처참한"세부 사항은 [MongoDB의 현지 시간대로 날짜별로 그룹화] (https://stackoverflow.com/a/45093686/2313887)를 참조하십시오. BSON 날짜에 저장된 시간대가 없기 때문에 "시간대 오프셋 가져 오기"와 같은 것은 없습니다. BSON 날짜는 UTC입니다. 하지만 내가 말했듯이, "피투성이"세부 사항. 일부 팝콘을 잡고 소름 끼치거나 교육을 받으십시오. 그 중 하나. –

+0

xtimezone에 ISODate로 날짜를 저장 한 다음 y 시간대에 가져 오려고하면 날짜 + x 시간대 오프셋이 나옵니다. 따라서 시간대를 어딘가에 저장해야합니다. –

+1

실제로 시간대와 함께 저장되지 않습니다. Robo 3T와 같이 실제로 "로컬"시간을 표시 할 수있는 옵션이 있습니다. 아마도이 설정을 해제해야합니다. "정말로"어떤 일이 일어나는지 알고 싶다면 일반 mongo 쉘을 사용하십시오. 만약 당신이 여전히 나를 의심한다면 그것은 [BSON spec] (http://bsonspec.org/spec.html)에 있습니다. –

답변

0

당신은 모든 date operators.

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