在sqlite中更改日期格式

时间:2012-12-24 12:45:22

标签: ios sqlite ios6

更改sqlite db 12/10/11 to 12-10-11 (mm-dd-yy)中的这个日期格式我无法这样做。我是sqlite中的菜鸟并且必须解析此值SELECT strftime('%d-%m-%Y',Date) from report但是我得到null作为sqlite db除外mm-dd-yy中的值如何转换格式12/10/11 to 12-10-11 (mm-dd-yy)。谢谢。真的很感激帮助。

1 个答案:

答案 0 :(得分:1)

答案简短:

如果您要将文本字符串存储为"12/10/11",并且要报告为"12-10-11",则应使用replace(X,Y,Z)函数替换YX的出现次数Z 1}}与SELECT replace('12/24/11','/','-'); 。因此:

12-10-11

将返回:

mm/dd/yy

答案很长:

首先,日期实际上并不作为SQLite中的正确数据类型存在。它们存储为TEXT,REAL或INTEGER值。见date and time datatype in SQLite。所以这取决于你的日期在数据库中的存储方式。

其次,您似乎暗示您以“TEXT”格式存储日期。这不是一个有效/有用的NSDateFormatter格式来存储日期/时间值(因为日期无法排序,不能在“大于”和“小于”操作中使用,不能在SQLite日期函数中使用,等等)。您确实希望以date and time functions文档的“时间字符串”部分中列出的格式之一存储日期时间值。

因此,通常您应该将日期/时间值存储为其中一种格式,当您从数据库中检索时,使用NSDate将其转换为TEXT。当您想在应用程序中显示日期值时,请使用您想要输出的任何格式。

但是,如果您不关心日期是否存储为文本字符串并且无法在SQLite中有效地用作日期,那么只需将其视为普通的TEXT字符串并使用replace(X,Y,Z)如上所述,"/"等函数用"-"替换{{1}}的出现次数。