2013-03-04 7 views
14

Devo confrontare la data in rotaie per ottenere i valori dopo quella data Ho inviato la data come "2013-03-04T06:26:25Z" ma in realtà il record nel db contiene la data come segue 2013-03-04 06:26:25.817149 così quando controllo con la data ritorna anche quel record ma io desidera i record dopo tale data. come posso rimuovere i millisecondi dal db? mi aiuti per favore.Come posso rimuovere i millisecondi dalla data e ora nei binari?

+0

che DB stai usando? – AnkitG

+0

Sto usando postgres .... – logesh

+0

O se sai che il tempo che stai usando per cercare con mai ha una precisione millisecondo, basta migliorare la tua query e la query per i record '> = tempo + 1. secondo. –

risposta

24

Ho avuto un problema simile

Aggiornare il vostro oggetto momento come questo prima di inviarlo al database:

time.change(:usec => 0) 
+0

Non è possibile specificare il formato da salvare invece di farlo? – logesh

+0

Il formato da salvare è definito nel database, può essere DATE, DATETIME, ecc. Il tuo ORM convertirà la data nel formato corretto per te. Non conosco Postgres, quindi forse puoi cambiare il tipo in uno meno preciso. – Intrepidd

+0

No sto chiedendo di impostare qualcosa come strftime (% H% M% S) da qualche parte nella configurazione in modo da rendere la data da salvare come formato specificato. – logesh

1

ero anche avere questo problema, tuttavia quando ero applicando la variazione as indicated in @Intrepidd's answer, si non stava influenzando i microsecondi del mio oggetto del tempo.

Si prega di notare che (almeno al momento) la chiave :usec funziona solo con il metodo Time#change, e non con il metodo DateTime#change.

Il metodo DateTime#change ignora le chiavi che non accetta, quindi non si sarebbe in grado di dire che il tentativo di modifica dei microsecondi non ha funzionato a meno che non si ispezionasse ulteriormente l'oggetto (ad esempio con DateTime#rfc3339(9)).

Quindi, prima di provare questa modifica, assicurarsi che si stia lavorando con un oggetto Time, non con un oggetto DateTime.

4

Da Ruby 1.9 è possibile utilizzare round

t = Time.now.round 
t.useC# => 0