[.NET] oracle 日期區間問題(解決)

看板Visual_Basic作者 (ianchu)時間11年前 (2014/03/22 01:21), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/1
請輸入專案類型(網站專案或者應用程式專案): 網站專案 我用grid view撈oracle資料庫, 有兩個欄位:開始日期與結束日期 設定條件是如果這兩個日期都有指定, 就撈出開始日期大於等於指定日期1, 結束日期小於等於指定日期2的資料 為了好讀與安全我使用string builder與parameters去分析變數 但是試了很多種寫法只有單純用字串湊出SQL的方式能撈出資料 可是同樣的sql在sql developer裡面都能夠撈出資料 邏輯上應該是對的 首先: StringBuilder sbStringSql = new StringBuilder(); sbStringSql.Append("select A.ID,B.NAME,A.STARTDATE,A.ENDDATE FROM A,B"); sbStringSql.Append("WHERE 1=1 AND A.ID=B.ID"); 然後以下是可以撈回來的的寫法,單純用字串組,用大於跟小於寫區間 sbStringSql.Append( " and ((to_char(A.STARTDATE,'yyyy-mm-dd')) >='" + strSTARTDATE + "'"); sbStringSql.Append(" and (to_char(A.ENDDATE,'yyyy-mm-dd')) <='" + strENDDATE + "')"); 不行的寫法,大於跟小於的寫法用變數不行 sbStringSql.Append(" and ((to_char(A.STARTDATE,'yyyy-mm-dd')) >=:STARTDATE"); sbStringSql.Append(" and (to_char(A.ENDDATE,'yyyy-mm-dd')) <=:ENDDATE)"); if (strSTARTDATE != string.Empty) { da.SelectCommand.Parameters.Add( new OracleParameter("STARTDATE",strSTARTDATE)); } if (strENDDATE != string.Empty) { da.SelectCommand.Parameters.Add( new OracleParameter("ENDDATE", strENDDATE)); } 另外BETWEEN的寫法用變數跟字串組都不行 變數就是跟上面一樣用PARAMETER去解 字串就是把日期那邊直接帶入text box的text 不知道是SQL寫法問題還是程式問題,想來求救一下 --

03/23 00:55, , 1F
你的變數沒有設type所以預設字串!那你str的格式有照yyyy-mm
03/23 00:55, 1F

03/23 00:55, , 2F
-dd嗎?
03/23 00:55, 2F
問題解決了 為什麼邏輯對了、sql丟到developer也能過,程式還是撈不回來資料呢 原來是parameter去append來替換變數 必須要按照順序去append才可以... ※ 編輯: ian90911 來自: 182.235.186.208 (03/26 21:10)
文章代碼(AID): #1JB7KMCO (Visual_Basic)
文章代碼(AID): #1JB7KMCO (Visual_Basic)