2013-01-24 16 views
9

sto cercando di trasferire il mio database dell'applicazione da MySQL a MongoDB, ma ho incontrato un problema con le query datetime.Come fare query con impostazioni di fuso orario in MongoDB

In MySQL, quando v'è una colonna datetime o timestamp, è possibile impostare fuso orario specifico per ogni richiesta utilizzando il comando:

SET time_zone = timezone; 
// do queries here 

C'è qualche tipo di soluzioni simili per questo tipo di richieste?

so le applicazioni possono fare il lavoro dopo il recupero dei dati da MongoDB, ma per quanto riguarda utilizzando l'aggregazione con $ all'ora, $ al mese o $ operatori al giorno?

+0

Non credo che ci sia ... è per questo che si dovrebbe sempre memorizzare le date come UTC. lascia che l'applicazione capisca le cose del fuso orario! – c0deNinja

+0

considerando funzioni in mysql come: ora(), giorno(), il mese() per le date, l'applicazione dovrà fare un sacco di lavoro per realizzare tutte queste cose – Jack

+0

Se si imposta manualmente il fuso orario tramite la notazione fuso orario alla data ISO oggetto come mostrato in questa domanda: http://stackoverflow.com/questions/11486779/formatting-isodate-from-mongodb mongodb potrebbe essere in grado di risolvere il corretto lato server fuso orario tuttavia mi sento di raccomandare fare cose in UTC risolvere al timestamp UTC e aggiungendo poi l'intero rappresentante fuso orario ontop e quindi la risoluzione di nuovo il display sul lato client – Sammaye

risposta

19

negozi MongoDB tutte le date e ore in UTC. Ciò consente che il supporto del fuso orario e la traduzione vengano eseguiti lato applicazione anziché lato server.

Il modo migliore per conservare date e gli orari è tramite l'oggetto Javascript Date. Ciò ti consentirà di convertire le date da e verso i timestamp Unix, usando getTime() e Date (millisecondi).

Va notato che Javascript memorizza il tempo in millisecondi da UNIX Epoch, mentre lo standard UNIX timestamp è in secondi da Epoch.

Problemi correlati