在我的SQLite數據庫,我有一個分,秒,並釐秒時間字段:SQLite和STRFTIME
00:01:100
我想選擇以毫秒MAX值的行,我發現那位的strftime功能。我試着:
SELECT MAX(strftime("%M:%S:%SSS", field)) FROM table;
但它不起作用。
在我的SQLite數據庫,我有一個分,秒,並釐秒時間字段:SQLite和STRFTIME
00:01:100
我想選擇以毫秒MAX值的行,我發現那位的strftime功能。我試着:
SELECT MAX(strftime("%M:%S:%SSS", field)) FROM table;
但它不起作用。
因爲這不在允許的格式列表中,所以您必須先對其進行編輯以便支持它。
然後運行strftime
功能
SELECT MAX(strftime("%H:%M:%f", "00:" || substr(field,1,3) || replace(':','.',substr(field,4)))) FROM table;
這應該將無法正常工作
編輯
所以,更新。爲什麼它不起作用:
strftime
當你已經有了格式化的時間並且想要將其轉換爲另一種格式時,它非常有用。
您有不支持格式的項目。 (List of formats here)。所以,你可以用默認的TEXT格式保存它。
因此,現在您需要編寫一個查詢,將此文本轉換爲正確的格式並進行比較。你基本上必須編寫自己的最大化函數,它將把這個文本轉換成MAX
函數可以處理的東西。
這是通過子串和鑄造的組合完成的。我在下面的查詢中完成的操作是將子字符串轉換爲整數,將它們相乘以將它們轉換爲秒,然後將其添加到MAX
。
SELECT time,MAX(cast(substr(time,1,2) as integer)*60+cast(substr(time,4,2) as integer)+cast(substr(time,7,3) as integer)/100) FROM t;
下面是運行
庵它不工作,因爲你不能只是彌補時間格式它的一個例子。沒有提供百分之一秒的存儲。他們存儲像小數http://www.sqlite.org/lang_datefunc.html < - 這列出允許的格式 – cjds
100釐秒通常被視爲1秒;你的意思是毫秒嗎? –
只需使用MAX()而不使用strftime()。你認爲它有什麼作用? –