2013-03-04 95 views
14

我必須比較日期在軌道以獲取在該日期後的值我已發送日期爲"2013-03-04T06:26:25Z",但實際上分貝中的記錄包含日期如下2013-03-04 06:26:25.817149因此,當我檢查日期它也返回該記錄,但我希望在該日期之後的記錄。我怎麼能從數據庫中刪除毫秒?請幫幫我。如何從日期時間在軌中刪除毫秒數?

+0

? – AnkitG 2013-03-04 10:31:46

+0

我正在使用postgres .... – logesh 2013-03-04 10:32:10

+0

或者,如果您知道您使用永遠不會搜索的時間具有毫秒精度,那麼只需改進您的查詢並查詢記錄'> = time + 1.second'即可。 – 2013-03-04 10:45:04

回答

24

我有一個類似的問題

更新自己的時間的物體,像這樣把它發送到數據庫之前:

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

不能我們能夠指定保存的格式,而不是這樣做? – logesh 2013-03-04 10:36:19

+0

要保存的格式在數據庫中定義,可以是DATE,DATETIME等。您的ORM會將日期轉換爲適合您的格式。我不知道postgres,所以也許你可以改變一個不太精確的類型。 – Intrepidd 2013-03-04 10:38:52

+0

不,我要求在配置的某個地方設置一些像strftime(%H%M%S)這樣的東西,以便將日期保存爲指定的格式。 – logesh 2013-03-04 10:41:49

1

我也有這個問題,但是當我申請的變化as indicated in @Intrepidd's answer,它不會影響我的時間對象的微秒。

請注意,(至少目前)的:usec鍵只與Time#change方法的工作原理,並DateTime#change方法。

DateTime#change方法會忽略它不接受的密鑰,因此除非您進一步檢查對象(例如使用DateTime#rfc3339(9)),否則您將無法判斷您嘗試的微秒更改無效。

因此,在嘗試進行此更改之前,請確保您使用的是對象Time而不是DateTime對象。

4

由於紅寶石1.9可以使用round

t = Time.now.round 
t.useC# => 0 
DB你用哪個