我使用的是Oracle,我有一個選擇查詢,我想從庫存表年份大於或等於選擇2000年cfqueryparam日期大於或等於
Select * from Inventory
where
manufac_date >= <cfqueryparam value="01/01/2000" cfsqltype="CF_SQL_DATE">
我只得到那些年份大於2000年的數值,但不包括2000年以後的數據。
有什麼意見或建議嗎?
我使用的是Oracle,我有一個選擇查詢,我想從庫存表年份大於或等於選擇2000年cfqueryparam日期大於或等於
Select * from Inventory
where
manufac_date >= <cfqueryparam value="01/01/2000" cfsqltype="CF_SQL_DATE">
我只得到那些年份大於2000年的數值,但不包括2000年以後的數據。
有什麼意見或建議嗎?
也許Oracle是不同的。但只要它承認cf_sql_date
,而不僅僅是cf_sql_timestamp
,我認爲沒有理由它不應該工作。你積極:
>=
並不僅僅是>
您應該使您的cfqueryparam值爲日期對象
manufacDateFilter = createDate(2000, 1 , 1);
查詢,那麼你必須
where
manufac_date >= <cfqueryparam value="#manufacDateFilter#" cfsqltype="CF_SQL_DATE">
或使用Oracle的to_date函數像這樣(沒有測試,但應該工作)
manufac_date >= to_date(<cfqueryparam cfsqltype="cf_sql_varchar" value="01/01/2000">,'mm/dd/yyyy')
同意不應該爲日期操作使用字符串,應該使用日期。 Fransis不應該將它們的日期值存儲爲字符串;他們應該是日期。 –
毫無疑問,日期時間對象更可取。但是,CF應該將該特定的美國日期字符串解析爲相同的日期值。這使得你想知道是否有其他事情正在發生。 – Leigh
一開始處理數據庫中的日期並不是最簡單的事情。尤其是對於implizit日期轉換,Oracle顯得非常挑剔。使用to_date()或to_char()總是一個好主意,可以爲您節省大量工作和麻煩。另一種選擇是使用ISO日期格式(2010-12-31),該格式可以在大多數(所有)數據庫引擎中正確轉換。 –
您能得到什麼,如果你使用'manufac_date>'?如果它是相同的,我會懷疑你的數據。 –
ale