2013-01-24 16 views
9

Próbuję przenieść moją bazę danych aplikacji z Mysql do Mongodb, ale napotkałem problem z kwerendami datetime.Jak wykonać kwerendę z ustawieniami strefy czasowej w Mongodb

w MySQL, gdy nie jest kolumną datetime lub datownik, można ustawić strefę czasową specyficzną dla każdego żądania za pomocą polecenia:

SET time_zone = timezone; 
// do queries here 

Czy istnieje jakiś rodzaj podobnych rozwiązań dla tego rodzaju postulatów?

wiem aplikacji może wykonać pracę po pobraniu danych z MongoDB, ale co za pomocą agregacji z $ Hour, $ miesięcznie lub $ operatorów dzień?

+0

Nie sądzę, że jest ... dlatego należy zawsze przechowywać daty jako UTC. pozwól aplikacji zorientować się w rzeczach strefy czasowej! – c0deNinja

+0

biorąc pod uwagę funkcje w mysql jak: godzina(), dzień(), miesiąc() dla dat, aplikacja będzie musiała wykonać wiele pracy, aby zrealizować wszystkie te rzeczy – Jack

+0

Jeśli ustawisz strefę czasową ręcznie poprzez zapis w strefie czasowej na datę ISO obiekt jak pokazano w tym pytaniu: http://stackoverflow.com/questions/11486779/formatowanie-isodate-from-mongodb mongodb może być w stanie rozwiązać poprawnie strefę czasową po stronie serwera jednak polecam robienie rzeczy w UTC rozdzielając na znaczniki czasu UTC i następnie dodanie całkowitej reprezentacji okna czasowego, a następnie ponowne wyświetlenie ekranu po stronie klienta. – Sammaye

Odpowiedz

19

MongoDB sklepach Wszystkie daty i godziny w UTC. Pozwala to na obsługę strefy czasowej i tłumaczenie po stronie aplikacji, a nie po stronie serwera.

Najlepszym sposobem przechowywania daty i godziny jest za pośrednictwem obiektu JavaScript Date. Umożliwi to konwersję dat na i od Uniksowych znaczników czasu, używając getTime() i Date (milliseconds).

Należy zauważyć, że JavaScript przechowuje czas w milisekundach od czasów Epoki Uniksa, natomiast standard UNIX timestamp znajduje się w sekundach od Epoki.

Powiązane problemy