2012-02-18 115 views
2

我需要的日期格式轉換Oracle SQL Developer中更新日期值

當前格式爲yyyy/MM/DD-HH:MM:SS:SSS,我需要將其轉換爲YYYY-MM- dd hh:mm:ss CST 我並不真正瞭解SQL,但做了一些研究。 這是我在論壇上諮詢其他人的命令。但它會引發我無法識別的命令錯誤。表名是B和列名是第一個

UPDATAE B 
set First = concat(to_char(substring(FIRST,1,4) + '-' + substring(FIRST, 6, 2) + '-' + substring(FIRST, 9, 2) + ' ' + substring(FIRST, 12, 8)); 

任何人都可以幫助我嗎?提前致謝。

+0

你有一個錯字(UPDATAE?)。您也只是將一個文本字段設置爲另一個。日期在哪裏? – muratgu 2012-02-18 02:25:36

+0

如果該列是「DATE」列,則它不具有「格式」。你不需要更新表格。從表格中選擇*時,只需使用不同的格式。如果該列不是「DATE」列,那麼您應該更改您的設計。不要在'varchar'列中存儲日期。 – 2012-02-18 08:44:20

回答

1

的 「無法識別的命令」 僅僅是UPDATE一個拼寫錯誤:

UPDATAE B 

// Should be 
UPDATE B 

要驗證的結果是你期望在執行UPDATE語句之前,使用SELECT什麼:

SELECT 
    to_char(substr(FIRST,1,4) || '-' || substr(FIRST, 6, 2) || '-' || substr(FIRST, 9, 2) || ' ' || substr(FIRST, 12, 8)) AS Test 
FROM B 
+0

謝謝,這是一個愚蠢的拼寫錯誤,我執行你的命令,它顯示無效的參數數量現在:( – user1200687 2012-02-18 02:30:31

+0

順便說一下,這個列指向錯誤信息是什麼? 命令行錯誤:1列:7 – user1200687 2012-02-18 02:33:00

+0

@ user1200687哎呀看到上面的變化了,我剛剛修改了你的原始語句,但是現在認識到它不適用於Oracle,'concatenate()'不應該出現在那裏,所有'+'都應該有?一直''||如此 – 2012-02-18 02:35:04

0

嗯。 ..我要麼失去一些非常明顯的東西,要麼其他人都是。

你想約會操作嗎?使用to_dateto_char。我將假設這個ss:sss表示秒,然後是小數秒。您的日期似乎是一個字符串,所以我們需要將它轉換兩次:

update b 
    set first = to_char(to_date(my_date, 'yyyy/mm/dd-hh:mi:ss:ff3') 
         ,'yyyy-mm-dd hh:mi:ss') 

通常,使用日期時,這是很遠很容易只使用date functions和提供formats

作爲一個附加點,如果你有一個日期,將它作爲日期存儲。它會在以後節省一個麻煩的世界。