2017-07-24 43 views
0

Ruby代碼按日期間隔選擇記錄:Oracle日期錯誤ORA-01830

monthly_activity = activity.trn_activity_items.find_by(
    'month >= ? AND month < ?', 
    activity.daily_stat_date.beginning_of_month, 
    activity.daily_stat_date.end_of_month 
) 

所有工作在MySQL和Postgres罰款,但甲骨文似乎`噸喜歡的事,我不能明白究竟是什麼。

Oracle錯誤:

OCIError: ORA-01830: date format picture ends before converting entire input string: SELECT "TRN_ACTIVITY_ITEMS".* FROM "TRN_ACTIVITY_ITEMS" WHERE "TRN_ACTIVITY_ITEMS"."TRN_ACTIVITY_ID" = :a1 AND (month >= '2017-07-01 00:00:00' AND month < '2017-07-31 23:59:59.999999') AND ROWNUM <= :a2 

感謝您的幫助。

回答

0

'2017-07-31 23:59:59.999999'

Oracle日期沒有小數秒(雖然有時間戳)。因此,您的查詢應該是這樣的:

AND month <= '2017-07-31 23:59:59') 

但如果你想保持與其它數據庫的兼容性可能是你不希望小於或等於少用,在這種情況下,你應該指定上限爲

AND month < '2017-08-01 00:00:00' 

或者,您可以更改列聲明,以便它具有timestamp數據類型。取決於你的用例。