2012-12-24 196 views
1

更改日期格式,這是在sqlite db 12/10/11 to 12-10-11 (mm-dd-yy)我無法這樣做。我是一個noob在sqlite中,並且必須解析此值SELECT strftime('%d-%m-%Y',Date) from report但我得到null作爲sqlite數據庫除了值在mm-dd-yy所以如何轉換格式12/10/11 to 12-10-11 (mm-dd-yy)。提前感謝。真的很感謝幫助。在sqlite中更改日期格式

+2

從您的描述來看,這聽起來像數據首先不是_stored_。在這種情況下,爲了轉換它,你必須自己做,或者將它存儲爲SQLite認可的可以格式化的日期。 – mah

+0

你可以嘗試'日期',我認爲日期必須有''。帶上引號 – hakiko

+0

查看[這裏](http://www.sqlite.org/datatype3.html)中的「日期和時間數據類型」。基本上,SQLite沒有日期數據類型,但有一些首選格式。如果您的日期存儲格式與首選格式不同,那麼您必須選擇「原始」值而不是使用內置日期/時間函數。 –

回答

1

簡短的回答:

如果你有一個文本字符串存儲爲"12/10/11",你希望報告爲"12-10-11",你應該使用replace(X,Y,Z)功能,具有Z取代的Y出現在X。因此:

SELECT replace('12/24/11','/','-'); 

將返回:

12-10-11 

長的答案:

首先,日期並不實際存在的SQLite中適當的數據類型。它們存儲爲TEXT,REAL或INTEGER值。請參閱date and time datatype in SQLite。所以這取決於你的日期如何存儲在數據庫中。

其次,您似乎暗示您以「mm/dd/yy」格式存儲日期。這不是一個有效/有用的TEXT格式來存儲日期/時間值(因爲日期不能排序,不能用於「大於」和「小於」操作,不能用於SQLite日期函數等)。您確實需要使用date and time functions文檔的「時間字符串」部分中列出的格式之一來存儲日期時間值。

因此,通常您應該將日期/時間值存儲爲其中一種格式,使用NSDateFormatter將其從數據庫中檢索時轉換爲NSDate。而當你想在你的應用中顯示日期值時,使用任何你想要輸出的格式。

但是,如果你不關心的日期存儲爲文本字符串,並不能有效地使用在SQLite的日期,然後只把它當作一個普通的老TEXT串並使用TEXT功能,如replace(X,Y,Z)更換如上所述,出現"/""-"

+0

感謝Rob.I有另一個插件查詢請幫助我。我已經使用這個查詢**從報告**中選擇strftime('%Y',替換(Date,'/',' - '))。我試圖實現這一點 - http://stackoverflow.com/questions/ 14019624/sqlite-query-to-find-sum-of-a-year-by-given-dates –

+0

我不認爲你可以使用這些日期函數,除非日期字段是在那些列出的格式之一我在我的回覆中引用了doc。值得注意的是,它需要採用'YYYY-MM-DD'格式(注意也是四個字符年)。或者,如果您的日期不是有效的日期格式,則可以使用簡單的'substr(date,7,2)'從MM-DD-YY格式中獲取兩位數的年份。 – Rob