Sqlite - 如何在 Swift 中检索 DATETIME 字段?
Sqlite - how to retrieve a DATETIME field in Swift?
我正在尝试使用以下代码从 SQLite 数据库中检索名为 TIMESTAMP 的 DATETIME 字段:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
var d1: NSDate = NSDate()
if getData.dictLocations["TIMESTAMP"] != nil {
d1 = dateFormatter.dateFromString(getData.dictLocationsNames["TIMESTAMP"]!)!
} else {
dateCreatedLabel.text = "FAILED"
}
问题似乎源于getData只有两个选项:
getData.dictLocation which is <String, Double> or
getData.dictLocationNames which is <String, String>
那么我该如何提取日期呢?不用说示例代码总是显示,"FAILED".
有什么想法吗?我正在使用 FMDB。
这取代了我今天早些时候提出的一个类似问题,该问题过于宽泛,现已删除。
当您将 NSDate
对象作为参数传递给 FMDB 中的 executeQuery
或 executeUpdate
时,它会为您进行必要的转换。您根本不必(也不应该)使用 NSDateFormatter
。让 FMDB 为您处理。
例如:
if !db.executeUpdate("create table foo (bar text, transactionTimestamp text)", withArgumentsInArray: nil) {
println(db.lastErrorMessage())
}
if !db.executeUpdate("insert into foo (bar, transactionTimestamp) values (?, ?)", withArgumentsInArray: ["baz", NSDate()]) {
println(db.lastErrorMessage())
}
if let rs = db.executeQuery("select bar, transactionTimestamp from foo", withArgumentsInArray: nil) {
while rs.next() {
let bar = rs.stringForColumn("bar")
let timestamp = rs.dateForColumn("transactionTimestamp")
println("bar = \(bar); timestamp = \(timestamp)")
}
rs.close()
} else {
println(db.lastErrorMessage())
}
我正在尝试使用以下代码从 SQLite 数据库中检索名为 TIMESTAMP 的 DATETIME 字段:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
var d1: NSDate = NSDate()
if getData.dictLocations["TIMESTAMP"] != nil {
d1 = dateFormatter.dateFromString(getData.dictLocationsNames["TIMESTAMP"]!)!
} else {
dateCreatedLabel.text = "FAILED"
}
问题似乎源于getData只有两个选项:
getData.dictLocation which is <String, Double> or
getData.dictLocationNames which is <String, String>
那么我该如何提取日期呢?不用说示例代码总是显示,"FAILED".
有什么想法吗?我正在使用 FMDB。
这取代了我今天早些时候提出的一个类似问题,该问题过于宽泛,现已删除。
当您将 NSDate
对象作为参数传递给 FMDB 中的 executeQuery
或 executeUpdate
时,它会为您进行必要的转换。您根本不必(也不应该)使用 NSDateFormatter
。让 FMDB 为您处理。
例如:
if !db.executeUpdate("create table foo (bar text, transactionTimestamp text)", withArgumentsInArray: nil) {
println(db.lastErrorMessage())
}
if !db.executeUpdate("insert into foo (bar, transactionTimestamp) values (?, ?)", withArgumentsInArray: ["baz", NSDate()]) {
println(db.lastErrorMessage())
}
if let rs = db.executeQuery("select bar, transactionTimestamp from foo", withArgumentsInArray: nil) {
while rs.next() {
let bar = rs.stringForColumn("bar")
let timestamp = rs.dateForColumn("transactionTimestamp")
println("bar = \(bar); timestamp = \(timestamp)")
}
rs.close()
} else {
println(db.lastErrorMessage())
}