2017-08-30 54 views
1

我使用的DB2數據庫。我必須查詢被叫其具有定義爲TIMESTAMP其列CRDATTIM之一「樣品」表。佔位符值轉換成需要的格式在SQL查詢

我從Java中使用佔位這樣的查詢表:

select * from sample where crdattim=? and recordcd='C'; 

的CRDATTIM字段的值是低於TIMESTAMP格式。

CRDATTIM         RECORDCD 

2014-08-08 12:12:39.621060     O 
2014-08-27 07:01:46.814080     T 
2014-08-27 06:41:47.404080     T 
2014-08-27 07:14:47.871080     T 
2014-08-28 02:23:50.390080     T 
2014-08-28 06:27:58.298080     T 
2014-09-02 08:57:37.607080     T 

從Java端,的CRDATTIM值稍微不同format.i.e傳遞例如2014-08-08-12.12.39.621060代替2014-08-08 12:12:39.621060。我不轉換成需要的格式2014-08-08-12.12.39.621060在java的結束,而是我想它在數據庫端轉換。

我試着用下面的查詢,但沒有奏效。

select * from sample where VARCHAR_FORMAT(crdattim,'YYYY-MM-DD HH24:MI:SS.FF6')=? and recordcd='C'; 

有關如何實現這一點的任何想法?

+0

如果'crdattim'是一個日期時間類型,你應該只把一個作爲java.sql.Timestamp中的參數 – Jens

+0

感謝您的答覆。 crdattim是表中的Timestamp類型。在oracle中,同一列被定義爲'Char'。我正在開發一個適用於所有數據庫的公用程序。我不想處理這些類型的檢查,無論它是java代碼中的字符還是時間戳。我想在sql查詢中處理它。有什麼辦法嗎?像鑄造或使用數據庫的其他功能。 –

+0

Sonds像你想推倒重來(OR映射器)。 – Jens

回答

1

你可以做類似下面

select * from sample where VARCHAR_FORMAT(crdattim,'YYYY-MM-DD-HH24.MI.SS.FF6')=? and recordcd='C'; 

select * from sample where to_char(crdattim,'YYYY-MM-DD-HH24.MI.SS.FF6')=? and recordcd='C'; 
+0

上述查詢導致語法錯誤。 –

+0

什麼是錯誤?我在當地檢查它得到了工作 – Rams

+0

對DB2數據庫? –