2017-07-26 30 views
1

我的查詢由DataAdapter管理更新,所以我很少或幾乎沒有控制權的generation.The問題查詢會是這樣的:「輸入值不夠長日期格式」當TableAdapter的

UPDATE MYSCHEMA.MYTABLE 
SET  MYDATETIME = :myDateTime 
WHERE (MYKEY = :myKey) 

數據訪問層是自動生成的。我無法改變它是如何工作的...

數據庫端的MYDATETIME的類型是Timestamp

DataAdapter查詢的參數myDateTime的類型和數據集中的字段是DateTime

不知道是否應該的問題。另外,在Oracle方面,小時似乎是24小時,但應用管理的小時有12小時的基數。但爲什麼它很重要?當調用更新方法時,我通過Date.Now。它會更合理嗎?但它仍然被拒絕,:

ORA-01840:輸入值不夠長日期格式

任何想法?

+0

你所說的「內一旦轉換的意思是數據集,它變成了'DateTime'「?你的意思是在數據庫內進行轉換嗎? (「在**數據集**內部轉換的是什麼意思?)更重要的是,如果這是一個Oracle數據庫,則不存在'DateTime'數據類型,Oracle只有'Date'(**總是**包含時間! )和'Timestamp'然後:在什麼系統(數據庫,語言等)爲您的傳入值':??myDateTime'一個'Timestamp'(你確定它不只是一個字符串) – mathguy

+0

@mathguy一個數據集某種在至極從表中提取的數據對象將被保存。我的是自動生成的,並從時間戳類型列的數據類型將日期時間。 – Fjodr

+0

我知道一個數據集是什麼,我不明白「轉換內數據集「的轉換,我認爲,不會發生‘數據集’你是誰找的轉換中 - 。是你的應用程序進行轉換,或由數據庫(或者是隱藏你的,因爲你?正在使用'DataAdapter',它不透明?) – mathguy

回答

1

按照評論聊天,似乎是因爲參數數據庫類型設置爲varchar

設置參數的ProviderType更相關的甲骨文期待的類型的東西串轉換正在發生 - 它」 LL或者是日期,日期時間,時間戳,OracleDateTime或在這個主題上有一些變化,希望(名稱根據您是否使用.NET Oracle客戶端或Oracle的一個變化)......