2010-06-10 117 views
0

有沒有辦法將日期轉換爲Sqlite中的字符串?例如,我想獲得的最小日期SQLite中:在Sqlite中將日期轉換爲字符串

SELECT MIN(StartDate) AS MinDate FROM TableName 

我知道在SQL Server中,我會用下面的SQL來完成我想做的事:

SELECT CONVERT(VARCHAR(10), MIN(StartDate), 101) AS MinDate FROM TableName 

謝謝!

+0

您如何在表格中存儲日期? – dan04 2010-06-10 23:41:14

回答

1

試試這個:

SELECT MIN(DATE('your-date-here')) as MinDate FROM TableName 

,並確保您的最新,這裏遵循的SQLite一個很好理解的格式(見Time String文檔中的部分)。

+0

運行它時,結果爲NULL。另外,「your-date-here」是我的表中的DATETIME列。我不確定這是否有所作爲? – Billy 2010-06-10 20:15:21

+0

如果它返回NULL,這是因爲你的參數不是有效的日期。據推測,你是日期的字符串。如果是這樣,請確保使用'YYYY-MM-DD'格式。 – dan04 2010-06-11 01:11:09

+0

SQLite將日期存儲爲字符串......正如Dan所說,您可能沒有使用格式正確的日期... – 2010-06-14 15:15:20

3

SQLite沒有一個日期類型。 CURRENT_TIMESTAMP實際返回的是YYYY-MM-DD HH:MM:SS格式的字符串。 date/time formatting/calculation functions接受此格式的字符串或數字,除非您使用'unixepoch'修飾符,否則它們將被解釋爲Julian dates

所以,「日期轉換成字符串」取決於你如何存儲日期:

  • 如果你將其存儲爲Julian日期,使用DATE(YourDateColumn)
  • 如果您將它們存儲爲Unix時間,請使用DATE(YourDateColumn, 'unixepoch')
  • 如果您將它們存儲爲ISO 8601字符串,那麼您無需執行任何操作。除非你想要一個不同格式的字符串,在這種情況下,你應該使用STRFTIME函數。
  • 如果您將它們存儲爲其他字符串格式,則應該考慮使用其中一種支持的格式,以便可以使用日期/時間函數。

在所有三種日期格式中,時間順序與字典順序相同,所以MIN函數按預期工作。

+0

可以確認'DATE(ZYOUR_COLUMN_NAME,'unixepoch')'適用於'CoreData'生成的SQLite文件。 – Erik 2014-01-31 15:41:36

1

試試這個!

SELECT * FROM Table WHERE strftime('%Y-%m-%d',CreatedAt) BETWEEN '2014-10-07' AND '2014-10-17'